2

我有以下问题:
我希望在没有本地实例化对象的情况下全局使用类的方法。

前任。文件:a.py

class A(object):    
    def __init__(self):
        return

    def sp_a(self):
        print "a"

if __name__ == "__main__":
    return A()

文件:test_a.py

import A

def run():
    sp_a()      

谢谢

4

3 回答 3

2

如果它是一个需要全局的方法,为什么要让它成为一个类的一部分呢?

一个.py

def sp_a():
    print "a"

test_a.py

from a import sp_a

def run():
    sp_a()
于 2012-12-22T01:25:01.620 回答
0

除了建议使用staticmethod您的其他答案之外,您还可以这样做:

class A(object):
  @staticmethod
  def foo():
    # code

foo = A.foo

从那时起,它foo是一个独立的名称,您可以直接从模块中导入,而无需导入A.

于 2012-12-22T00:26:48.733 回答
0

如果它是无状态的,那么您可以通过使用 @staticmethod 装饰它来使其成为静态方法

class A(object):    
    def __init__(self):
        return

    @staticmethod
    def sp_a():
        print "a"

if __name__ == "__main__":
    return A()

文件:test_a.py

import A

def run():
    A.sp_a()      
于 2012-12-22T00:25:11.400 回答