在python中定义常量对象
我在Factor.py文件中定义了一个类因子:在python中定义常量对象,python,oop,Python,Oop,我在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)
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。如果你想把它放在类定义之外,就这样做:
class Factor:
...
Factor.empty = Factor([], None)
但请记住,这不是一个“常数”。您可以轻松地更改empty
的值或其属性。例如:
Factor.empty = something_else
或:
因此,如果您将Factor.empty
传递给任何操纵它的代码,您可能会发现它没有您想要的那么空
解决这个问题的一个方法是每次有人访问
因子时重新创建一个新的空因子。empty
:
class FactorType(type):
@property
def empty(cls):
return Factor([], None)
class Factor(object):
__metaclass__ = FactorType
...
这会将空的
属性添加到因子
类中。您可以安全地使用它,因为每次访问empty
,都会创建一个新的空系数
class FactorType(type):
@property
def empty(cls):
return Factor([], None)
class Factor(object):
__metaclass__ = FactorType
...