我有一个关于object属性的python问题。代码:
>>> class A(object):
... dict = {}
... def stuff(self, name):
... self.dict[name] = 'toto'
...
>>> a = A()
>>> print a.dict
{}
>>> a.stuff('un')
>>> print a.dict
{'un': 'toto'}
>>> b = A()
>>> print b.dict
{'un': 'toto'}
我是PHP devlopper,在PHP rint b.dict
中将是{}
。为什么python在a
和b
之间共享此属性?在新实例化中定义将成为 new 的类属性的方法是什么?
答案 0 :(得分:3)
您创建了类属性,而不是实例属性。字典是可变的,您可以直接从实例或类中更改它,但是根据定义,类属性在所有实例之间共享。
在__init__
方法中创建一个新的空字典:
class A(object):
def __init__(self):
self.dict = {}
def stuff(self, name):
self.dict[name] = 'toto'