AttributeError: 'ProtectMe' object has no attribute '__name'
查看报错信息,告诉我们没有__name 那个属性。果然隐藏了,在类的外面无法调用。再试试那个函数,可否?
if __name__ == "__main__":
p = ProtectMe()
p.code()
p.__python()
修改这部分即可。其中 p.code() 的意图是要打印出两句话:"Which language do you like?"和"I love Python.",code() 方法和__python() 方法在同一个类中,可以调用之。后面的那个 p.__Python() 试图调用那个私有方法。看看效果:
$ python 21102.py
Which language do you like?
I love Python.
Traceback (most recent call last):
File "21102.py", line 23, in <module>
p.__python()
AttributeError: 'ProtectMe' object has no attribute '__python'
如愿以偿。该调用的调用了,该隐藏的隐藏了。
用上面的方法,的确做到了封装。但是,我如果要调用那些私有属性,怎么办?
可以使用 property 函数。
#!/usr/bin/env Python
# coding=utf-8