在一个大型python项目(openerp)中,我多次遇到以下模式:
在一个模块中,定义了一个类及其方法。然后,在同一个模块中,在类定义之后立即实例化该类的一个实例,然后从其他模块调用该实例。
# in module_A.py:
class ClassA(object):
def __init__(self, default="Hello world!"):
self.default = default
def my_method(self, data):
print self.default
print data
object_a = ClassA()
对我来说,将方法定义为模块函数看起来更简单,没有类查找重载:
# in module_B.py:
default = "Hello world!"
def my_method(data):
print default
print data
从其他模块看,用法很相似:
from module_a import object_a as prefix
prefix.my_method("I'm so objective!")
相对:
import module_b as prefix
prefix.my_method("I'm so modular!")
是否有任何理由更喜欢模式 A 而不是模式 B?还是模式 B 更 Pythonic?