Python对象的属性

2024-06-17 08:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于对象属性的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开发人员,在PHP中rint b.dict将是{}。为什么python在ab之间共享这个属性?定义类属性的方法是什么?在新实例化时谁将是新的?你知道吗


Tags: 对象代码nameself属性object开发人员def
1条回答
网友
1楼 · 发布于 2024-06-17 08:10:48

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

改为在__init__方法中创建一个新的空字典:

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

    def stuff(self, name):
        self.dict[name] = 'toto'

相关问题 更多 >