【问题标题】:does the @property decorator function as a getter?@property 装饰器是否起到吸气剂的作用?
【发布时间】:2022-11-29 00:21:07
【问题描述】:

我是 python 的新手,我正在尝试了解“getter”的用法。它的用例对我来说并不明显。 如果我在一个方法上使用一个属性装饰器并且我能够返回一个特定的值,我到底会用'getter'来做什么。

class Person:
    def __init__(self,name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age      

    
    @age.setter
    def age(self,new_age):
        if isinstance(new_age,int) and 18 < new_age < 120:
            self._age = new_age

【问题讨论】:

  • property 是一个类型;请参阅 Descriptor HowTo 指南的 this section,了解如何在纯 Python 中实现属性。

标签: python properties python-decorators getter


【解决方案1】:

@property 装饰器在 Python 类的给定字段上添加默认的 getter 和 setter。

以下 2 个类定义彼此完全等价,因为属性对象具有可用作装饰器的 getter、setter 和 deleter 方法,它们创建属性的副本,并将相应的访问函数设置为装饰函数。

class Person:
    def __init__(self,name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age 
class Person:
    def __init__(self,name, age):
        self._name = name
        self._age = age
    
    @property
    def age(self):
        return self._age 

    @age.setter
    def age(self, value):
        self._age = value

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 2017-09-28
    • 2011-06-11
    • 2018-11-16
    • 1970-01-01
    • 2018-04-05
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多