1
Dog(object): def __init__(self, name, age, job): # 公有属性: 允许随意访问 self.name = name # 受保护的属性:允许直接访问,但是不建议直接访问 self._age = age # 私有属性:拒绝直接访问 self.__job = job
2
# 所有权限相关的设置,在类内部都不受影响def show(self): print(self.name, self._age, self.__job)def set_age(self, age): print('通过方法间接修改受保护的属性') self._age = agedef get_age(self): print('有人打听你年龄了') return self._age
3
# 正常情况下调用方法需要dog.job()# 加上@property以后,调用方法就不需要加括号了,直接dog.job# 只要出现这样的写法,在外部调用.job就不是访问job属性,而是调用job()方法# 特殊的get方法@propertydef job(self): print('有人问你工作呢') return self.__job
4
# 如果设置了@property访问属性,就可以继续设置修改属性的写法# 特殊的set方法@job.setterdef job(self, job): print('有人给你份工作') if job == 'code': print('哥不想在写代码了') else: self.__job = job
5
dog = Dog('xq', 19, 'baoan')print(dog.name) # 公有属性可以随意访问print(dog._age) # 受保护的变量可以直接访问,只是不太建议直接访问print(dog._Dog__job) # 可以通过这种方法强行访问私有属性,但是极度不推荐这样做
6
dog = Dog('xq', 19, 'baoan')print(dog.name) # 公有属性可以随意访问print(dog._age) # 受保护的变量可以直接访问,只是不太建议直接访问print(dog._Dog__job) # 可以通过这种方法强行访问私有属性,但是极度不推荐这样做
END