from chapter04.class_method import Date class User: def __init__(self, birthday): self.__birthday = birthday # __birthday 是一个私有属性 def get_age(self): return 2019 - self.__birthday.year def __private_method(self): print("I'm private!") if __name__ == '__main__': user = User(Date(1990, 2, 1)) print(user.get_age()) print(user._User__birthday) # 也可以这样偷偷获取,实际上 __birthday 属性的名称被改变了 user._User__private_method() # 也可以这样偷偷调用私有方法
#数据封装和私有属性 from chapter04.class_method import Date class User: def __init__(self, brd): self.__brd = brd def get_age(self): return 2018 - self.__brd.year if __name__ == '__main__': user = User(Date(1999, 1, 1)) print(dir(user)) print(user.get_age())
from chapter04.class_method import Date class User: def __init__(self, birthday): self.__birthday = birthday def get_age(self): return 2018 - self.__birthday.year if __name__ == "__main__": user = User(Date(1990, 3, 1)) print(user.get_age()) print(user._User__birthday)
""" python 的自省机制 自省:是通过一定的机制查询到对象的内部结构 """ from chapter04.class_method import Date class User: def __init__(self, birthday): self.birthday = birthday def get_age(self): return 2018 - self.birthday.year if __name__ == '__main__': user_ = User(Date.from_string('2011-2-3')) print(user_.get_age()) print(user_)
# -*- coding: utf-8 -*- from chapter04.class_method import Date class User: def __init__(self, birthday): self.__birthday = birthday def get_age(self): return 2020 - self.__birthday.year class Student(User): def __init__(self, birthday): self.__birthday = birthday if __name__ == '__main__': user = User(Date(1990,2,1)) print(user.get_age()) print(user._User__birthday) # 私有属性并未真正隐藏 stu = Student(Date(1990,2,1)) print(stu._Student__birthday)