【发布时间】:2013-07-19 04:04:16
【问题描述】:
在一个大型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?
【问题讨论】:
-
youtube.com/… 没有回答您的问题,但这可能会让您感兴趣。
-
正如你提到的 OpenERP,这是为不是 OpenERP 模型的类找到的,但对 OpenERP 模型不这样做。在 OpenERP
标签: python openerp instantiation python-module