1

我有一个关于对象属性的 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 开发者,在 PHPrint b.dict中将是{}. a为什么python在和之间共享这个属性b?定义新实例化的新类属性的方法是什么?

4

1 回答 1

3

您创建了一个类属性,而不是实例属性。字典是可变的,您可以从实例或直接在类上更改它,但根据定义,类属性在所有实例之间共享。

而是在方法中创建一个新的空字典__init__

class A(object):
    def __init__(self):
        self.dict = {}

    def stuff(self, name):
        self.dict[name] = 'toto'
于 2013-11-07T12:35:30.323 回答