__xx:双前置下划线,子类不可继承属性、方法,父类私有。
详见:https://www.cnblogs.com/andy9468/p/8299448.html
例子1:隐藏数据:私有化后,用get和set方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class MoneyClass(object): 2 def __init__(self): 3 self.__money = 0 4 5 def get_money(self): 6 return self.__money 7 8 def set_money(self, value): 9 if isinstance(value, int): 10 self.__money = value 11 else: 12 print("error:不是整型数字") 13 14 15 m1 = MoneyClass() 16 print(m1.get_money()) 17 m1.set_money(50) 18 print(m1.get_money())
输出:
0
50
例子2:property属性:自动调用get、set方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class MoneyClass(object): 2 def __init__(self): 3 self.__money = 0 4 5 def get_money(self): 6 return self.__money 7 8 def set_money(self, value): 9 if isinstance(value, int): 10 self.__money = value 11 else: 12 print("error:不是整型数字") 13 14 getsetmoney = property(get_money, set_money) 15 16 17 m1 = MoneyClass() 18 print(m1.getsetmoney) 19 m1.getsetmoney = 800 20 print(m1.getsetmoney)
输出:
0
800
例子3:property装饰器:自动调用get、set方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class MoneyClass(object): 2 def __init__(self): 3 self.__money = 0 4 5 @property 6 def getsetmoney(self): 7 return self.__money 8 9 @getsetmoney.setter 10 def getsetmoney(self, value): 11 if isinstance(value, int): 12 self.__money = value 13 else: 14 print("error:不是整型数字") 15 16 17 m1 = MoneyClass() 18 print(m1.getsetmoney) 19 m1.getsetmoney = 1000 20 print(m1.getsetmoney)
输出:
0
1000