是否可以在类函数中使用静态变量(如在C ++中)
以下内容并未给出我所期望的内容
动机是初始化(非常昂贵的过程)函数内的查找列表 - 但仅限于调用它时
对同一函数的后续调用不应该再次初始化变量
有没有成语来实现这个目标?
如果函数与类对齐,则很好;因此规则的值可用于'A'的所有实例
>>> class A:
... def func(self):
... if not hasattr(self.func,"rules"):
... print 'initialize'
... rules=[8,7,6]
... rules.append(4)
... return rules
...
>>> a=A()
>>> for x in range(5):
... print a.func()
...
initialize
[8, 7, 6, 4]
initialize
[8, 7, 6, 4]
initialize
[8, 7, 6, 4]
initialize
[8, 7, 6, 4]
initialize
[8, 7, 6, 4]
答案 0 :(得分:2)
class A(object): # subclass object for newstyle class
def func(self, rules=[]):
if not rules:
rules[:] = [8, 7, 6]
rules.append(4)
return rules
>>> a = A()
>>> for x in range(5):
print a.func()
[8, 7, 6, 4]
[8, 7, 6, 4, 4]
[8, 7, 6, 4, 4, 4]
[8, 7, 6, 4, 4, 4, 4]
[8, 7, 6, 4, 4, 4, 4, 4]
答案 1 :(得分:1)
如果您希望变量与类关联,请将其存储在类中:
class A(object):
def func(self):
if not hasattr(A,"rules"):
print 'initialize'
A.rules=[8,7,6]
A.rules.append(4)
return rules