AttributeError:'MyClass'对象没有属性'__val1'

时间:2016-11-22 18:15:45

标签: python-3.x class attributes

所以我正在尝试制作一个基本的类功能程序,并且我在一个奇怪的事情的早期阶段陷入困境。我有打开文本文件的函数来创建Class对象和所有,但问题是我似乎无法调用任何对象值。以下是我的对象生成方式的要点:

Class MyClass:
    def __init__(self,val1,val2):
         self.__val1 = val1
         self.__val2 = val2

def main():
    dict = {}
    ...
    dict[key] = MyClass(val1, val2)

此时我应该能够用

调用对象值
    dict[key].__val1
    dict[key].__val2 

但继续在标题中收到错误。

1 个答案:

答案 0 :(得分:1)

通过在名称前添加“_ClassName”来破坏双下划线名称。在 Inside 类方法中,您可以使用__var1表示法引用这些名称,Python会为您实际找到它们。

在课堂体外,您需要提供完整的受损名称才能访问它,即:

print(d[k]._MyClass__val1)

顺便说一句,即使这可能是一个例子,也不要使用像dict这样的名字;他们掩盖了他们的内置对手。像我这里一样使用d之类的名称。