首页 > 其他分享 >Day28.property使用part2

Day28.property使用part2

时间:2024-06-23 18:55:16浏览次数:25  
标签:.__ Day28 self part2 函数 print property name

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

 

标签:.__,Day28,self,part2,函数,print,property,name
From: https://www.cnblogs.com/vless/p/18263782

相关文章

  • LeetCode刷题day4——链表part2
    24.两两交换链表中的节点用pre代表第1个节点,cur代表它后面的相邻节点,tmp存储cur->next。但是问题找不到怎么返回新的节点。想着就循环一次,在第一次交换的时候就确认新的头结点。但还存在很多问题,具体如下:classSolution{public:ListNode*swapPairs(ListNode*he......
  • Day28.property使用part1
    1.property使用part1 @property用法,代码如下:#装饰器是在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加#新功能的可调用对象#property是一个装饰器,用来将绑定给对象的方法,伪装成一个数据属性(即不需要加`()`调用)'''成人的BMI数值:过轻:低于18.5......
  • Day28.为何要隐藏属性
    1.为何要隐藏属性 为何要隐藏属性,代码:#2.为何要隐藏print('为何要隐藏'.center(50,'-'))#I、隐藏数据属性#将数据隐藏起来就限制了类外对数据的直接操作,然后类内应该提供相应的接口来允许类外部间接地操作数据,#接口之上可以附加额外的逻辑来对数据地操作进行严格......
  • XAF 属性编辑器(PropertyEditor)- 原理篇
    前言随着DEV24.1.3的发布,XAFBlazor中的属性编辑器(PropertyEditor)也进行了很大的改动,在使用体验上也更接近WinForm了,由于进行了大量的封装,理解上没有WinForm直观,所以本文通过对属性编辑器的原理进行解析,并对比新旧版本中的变化,使大家能够对属性编辑器有一个更全面的认识。......
  • JavaScript基础部分知识点总结(Part2)
    初识JavaScript1.JavaScript是什么JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思)脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行现在也可以基于Node.js技术进行服务器端编程2.JavaScript的作用表单动态校......
  • 软件测试理论基础Part2
    测试用例设计等价类划分法有效等价类满足需求的无效等价类不满足需求的等价类划分方法操作步骤明确需求确定有效和无效等价类编写测试用例边界值划分法边界范围上点处在边界上的点(正好等于)离点离上点最近的点内点范围内的点开区间,闭区......
  • Day28.如何隐藏属性
    1.如何隐藏属性_隐藏属性的使用方法2.如何隐藏属性_隐藏属性的需要注意的问题'''二:将封装的属性进行隐藏操作'''#1.如何隐藏:在属性名前加__前缀,就会实现对外隐藏属性效果#该隐藏需要注意的问题:#Ⅰ:在类外部无法直接访问双下滑线开头的属性,但知道了类名和属性名可以......
  • Day28.课程对象定义与使用
    1.课程对象定义与使用_课程类和班级类关联 班级类,Class:'''班级'''classClass:#__init__中,初始化单个对象,记录每个班级独有的东西def__init__(self,class_name):self.class_name=class_name#初始班级时,班级没有课程表self.cla......
  • Day28.学校与班级建关联
    1.学校与班级建关联_班级类,将班级和班级对应的课程信息生成对象'''班级'''classClass:#__init__中,初始化单个对象,记录每个班级独有的东西def__init__(self,class_name):self.class_name=class_name#初始班级时,班级没有课程表self......
  • Day28.学校类的定义与使用
    1.学校类的定义与使用_学校类__创建学校并关联班级 学校类__创建学校并关联班级,代码如下:#整合-->解耦合-->扩展性增强classSchool:#学校类#学校共有的数据school_name='OLDBOY'#每个学校独有的东西def__ini......