我在文件factor.py中定义了一个类因子:
class Factor:
def __init__(self, var, value):
self.var = var # hold variable names
self.value = value # hold probability values
为了方便和代码清洁,我想定义一个常量变量,并能够将其作为Factor.empty访问
empty = Factor([], None)
这样做的常见方法是什么?我应该在课堂上定义,还是在外面?我想把它放在课堂定义之外,但之后我就不能把它称为Factor.empty了。
答案 0 :(得分:5)
如果你想在类定义之外,只需这样做:
class Factor:
...
Factor.empty = Factor([], None)
但请记住,这不是一个常数"。您可以轻松地执行某些操作来更改empty
或其属性的值。例如:
Factor.empty = something_else
或者:
Factor.empty.var.append("a value")
因此,如果您将Factor.empty
传递给任何操作它的代码,您可能会发现它不是您想要的空白。
该问题的一个解决方案是每次有人访问Factor
时重新创建新空Factor.empty
:
class FactorType(type):
@property
def empty(cls):
return Factor([], None)
class Factor(object):
__metaclass__ = FactorType
...
这会向empty
类添加Factor
属性。您可以安全地使用它,因为每次访问empty
时,都会创建一个新的空Factor
。