刚入python的学友可能会发现一个问题,看下面代码
class Pen:
def __init__(self,name,ages):
self.name=name
self.__age=ages
def set_age(self,ages):
if ages<=0|ages>150:
raise Exception("岁数不合法,请注意!!!!")
else:
self.__age=ages
def in_self(self):
print(self.name, ">>>>>>>>", self.__age)
pen=Pen('王',12)
pen.__age=13
print(pen.__age)
pen.in_self()
```python
疑问,为什么age 私有化之后还可以直接用实例 . 出来修改,
通过这个问题我们加上
print(pen.__dict__)
#结果{'name': '王', '_Pen__age': 12, '__age': 13}
结论:python中,实例直接点出来别的属性是直接在实例上面添加其他的属性
问:现在__age私有化了,那有什么方法可以获取和修改呢
print(pen._Pen__age)
print(pen._Pen__age=20)
#运行发现这里可以直接获取到私有的属性,并且可以直接修改掉,
结论:python的私有化之后其实只是把属性名换了。可以通过__dict__获取对应的属性信息
__init__不是添加了__变成私有吗?
注意在属性或者方法中前面__是变成私有化,__xx__这样就变成非私有了