Python属性错误对象没有属性

2023-12-13

当我应用两个下划线时,出现错误AttributeError: 'Organization' object has no attribute '__employees'这是代码。

 class Organization(object):
        __employees=[]

    google=Organization()
    google.__employees.append('Erik')

Python 没有实现私有变量的概念。如果是这样我会得到错误。如果我删除一个下划线,代码执行时不会出现错误。


好吧,您已将其声明为私有变量。

>>> class Organization(object):
...     __employees = []
... 
>>> google = Organization()
>>> google._Organization__employees.append('Erik')
>>> google._Organization__employees
['Erik']

>>> dir(Organization)
['_Organization__employees', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

正如你所看到的,它保存你的变量名_类名__变量名。 在你的情况下是_组织__员工.

来自Python 文档s:

__spam 形式的任何标识符(至少两个前导下划线, 最多一个尾随下划线)在文本上替换为 _classname__spam,其中 classname 是删除前导下划线的当前类名称。这种破坏是在不考虑的情况下完成的 到标识符的语法位置,因此它可以用于 定义类私有实例和类变量、方法、变量 存储在全局变量中,甚至变量存储在实例中。私人到 此类在其他类的实例上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python属性错误对象没有属性 的相关文章

随机推荐