# 封装,外部无法访问
class Person:
def __init__(self,name,age) -> None:
self.name=name
self.age=age
self.__lifeval=100 # 左侧双下划线,私有变量,私有属性
def get_lifeval(self): # 定义获取私有变量的函数,可以做到只读不写,数据更加安全
print(self.__lifeval)
return self.__lifeval
def got_attack(self):
self.__lifeval-=20
self.get_lifeval()
self.__breath()
def __breath(self): # 私有方法,外部普通方式无法访问,只有类内部的其他实例方法可以使用
print(f"{self.name} is breathing.")
if __name__ == "__main__":
a=Person("Alex",22)
print(a.name)
a.got_attack()
a.got_attack()
a.got_attack()
a.got_attack()
# 非要访问私有属性/方法,也可以
# 实例名._类名+方法名(),相当于对封装的一个破解
a._Person__breath()
a._Person__lifeval=100
a.get_lifeval()
# 实例已经生成后,再创建双下划线变量,不是私有属性,在外部可以访问到,并不具有私有性。
a.__val=200
print(a.__val)