最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • Python中@property的介绍与使用

    由于 Python 语言具有灵活简洁的语法,总能使用一些奇技淫巧来重新装饰一下传统的做法,这种奇技淫巧被称为语法糖,使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。

    使用@property

    我们定义一个类的属性,但是我们要求属性值必须是某个类型或者符合某种条件,这样的话我们每次对该属性进行写的时候,
    都要进行检查,这样非常繁琐。

    class Human(object):
        def __init__(self, age=0):
            self.age = age
    
    ruhua = Human()
    age = input("请调整如花的年龄:")
    
    try:
        age = int(age)
        if age < 0: print("年龄不能为负数,年龄调整失败") else: ruhua.age = age except: print("请输入整数,年龄调整失败") print(ruhua.age)

    在面向对象编程中,我们习惯于把这些类型检查或条件检查逻辑放在类中,然后给属性赋予私有特性(防止在类的外部写该属性还要自己写检查),
    我们常用的做法是自己写一个 set 函数进行写属性操作,get 函数进行读属性操作。

    class Human(object):
        def __init__(self, age=0):
            self.__age = age
    
        def setage(self, age):
            try:
                age = int(age)
                if age < 0:
                    print("年龄不能为负数,年龄调整失败")
                else:
                    ruhua.__age = age
            except:
                print("请输入整数,年龄调整失败")
    
        def getage(self):
            return self.__age
    
    ruhua = Human()
    age = input("请调整如花的年龄:")
    ruhua.setage(age)
    print(ruhua.getage())

    把属性设置私有的,让用户通过 get 和 set 来访问属性,这样显然不符合我们 python 语言的高大上的特质,
    如果我们能做到把函数变成属性,在访问属性时就是调用函数,这样在函数中我们可以做参数类型检查和条件检查,
    就如属性自己做检查一样,Python 提供 @property 关键字可以把函数变成属性。

    class Human(object):
        def __init__(self, age=0):
            self.__age = age
    
        @property
        def age(self):
            return self.__age
    
        @age.setter
        def age(self, age):
            try:
                age = int(age)
                if age < 0: print("年龄不能为负数,年龄调整失败") else: ruhua.__age = age except: print("请输入整数,年龄调整失败") ruhua = Human() age = input("请调整如花的年龄:") ruhua.age = age print(ruhua.age)

    本节重要知识点

    要知道传统的做法 get 和 set 的由来。

    会灵活使用 @property。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » Python中@property的介绍与使用
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情