Day29.property使用part2
1.property使用part2_多次调用类中的函数方法
property用法,案例一代码如下:
'''案例一''' class People: def __init__(self, name): self.__name = name def get_name(self): return self.__name def set_name(self,val): if type(val) is not str: print('必须传入str类型') return self.__name = val def del_name(self): print('不让删除') # del self.__name # 现在property()函数中传入类下的三个函数名 name123 = property(get_name, set_name, del_name) print('方案一'.center(60, '-')) obj1 = People('egon') print('调用函数get_name得到返回值'.center(40, '-')) print(obj1.get_name()) print('调用函数set_name修改数值'.center(40, '-')) obj1.set_name('EGON') print(obj1.get_name()) print('调用函数del_name删除数值'.center(40, '-')) obj1.del_name()
2.property使用part2_使用property()函数中传入类,并根据正常逻辑调用类下函数方法
property用法,案例二代码如下:
'''案例二''' class People: def __init__(self, name): self.__name = name def get_name(self): return self.__name def set_name(self,val): if type(val) is not str: print('必须传入str类型') return self.__name = val def del_name(self): print('不让删除') # del self.__name # 现在property()函数中传入类下的三个函数名 name123 = property(get_name, set_name, del_name) print('方案二:使用函数添加property方法'.center(60, '-')) obj2 = People('egon') # 正常代码逻辑 print('执行类下函数方法查看数据'.center(40, '-')) print(obj2.name123) print('执行类下函数方法修改数据'.center(40, '-')) obj2.name123=18 print('执行类下函数方法删除数据'.center(40, '-')) del obj2.name123
3.property使用part2_方法3(推荐使用):优化使用property()函数中传入类,并根据正常逻辑调用类下函数方法
property用法,案例三代码如下:
'''案例三的类函数(推荐使用)原理:将想让外部访问的函数名统一定义,即name,然后函数上@不同的方法''' class People: def __init__(self, name): self.__name = name @property # name = property() def name(self): return self.__name @name.setter # 修改数据,即调用name函数(本质还是property()函数)下的setter方法 def name(self,val): # obj1.name = 'EGON' if type(val) is not str: print('必须传入str类型') return self.__name = val @name.deleter def name(self): print('不让删除') # del self.__name print('方案三:使用函数添加property方法'.center(60, '-')) obj3 = People('egon') # 正常代码逻辑 print('执行类下函数方法查看数据'.center(40, '-')) print(obj3.name) print('执行类下函数方法修改数据'.center(40, '-')) obj3.name=18 print('执行类下函数方法删除数据'.center(40, '-')) del obj3.name