在学习Python时,我遇到了这个奇怪的行为:
考虑下面这个简单的类:
考虑下面这个简单的类:
class Human(object):
def __init__(self, name):
self.__name = name
def description(self):
print("Hello, my name is %s" % self.__name)
我希望避免在创建对象后能够更改名称。
如果我使用以下代码:
MyHuman = Human("Andy")
MyHuman.__name = "Arthur"
MyHuman.age = 23
MyHuman.description()
print MyHuman.age
在对象实例化之后,它不会更改名称,这很好,因为我希望实例变量是私有的。另一方面,我认为它会抱怨访问此变量。它甚至不会抱怨访问神秘的“age”变量,并且稍后正确地打印它。
我来自C#,这对我来说似乎很奇怪。我的错误在哪里?
int age = 23;
。Python允许您将这些变量放入任何对象的命名空间中,因为它非常方便。 - TigerhawkT3