And*_*y M 3 python scope properties class python-2.7
在学习Python时,我遇到了这种奇怪的行为:
考虑这个简单的类:
class Human(object):
def __init__(self, name):
self.__name = name
def description(self):
print("Hello, my name is %s" % self.__name)
Run Code Online (Sandbox Code Playgroud)
我希望避免在创建对象后更改名称.
如果我用这个:
MyHuman = Human("Andy")
MyHuman.__name = "Arthur"
MyHuman.age = 23
MyHuman.description()
print MyHuman.age
Run Code Online (Sandbox Code Playgroud)
它不会在对象实例化后更改名称,这很好,因为我希望实例变量是私有的.另一方面,我认为它会抱怨访问这个变量.它甚至没有抱怨访问一个神秘的"年龄"变量并在以后正确打印它.
我来自C#,对我来说似乎很奇怪.我的错误在哪里?
你应该知道以下内容:
Run Code Online (Sandbox Code Playgroud)"_<className>__<attributeName>"
使用该名称,可以从外部访问.从类内部访问时,名称将自动正确更改.
归档时间: |
|
查看次数: |
5482 次 |
最近记录: |