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

 

posted on 2024-06-23 18:42  与太阳肩并肩  阅读(3)  评论(0编辑  收藏  举报

导航