1

类函数中是否可以有静态变量(如在 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]
4

2 回答 2

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]
于 2013-05-28T05:37:45.500 回答
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
于 2013-05-28T05:37:48.770 回答