Skip to main content
 首页 » 编程设计

python之在 python 中使用属性的 getter

2025年05月04日14freeliver54

我正在研究属性,但无法理解 getter 的用法。

代码:

class A: 
    def __init__(self,p): 
        self._p = p 
    @property 
    def p(self): 
        return self._p 
    @p.setter 
    def p(self, value): 
        self._p = value 
    @p.getter 
    def p(self): 
        return self._p 

所以,我做了以下

obj = A(10) 
print(obj.p) 

我得到了以下输出:

10

所以,我想,调用@p.getter 并返回_q 的值。

但是,我在没有 @p.getter 的情况下尝试如下

class A: 
    def __init__(self,p): 
        self._p = p 
    @property 
    def p(self): 
        return self._p 
    @p.setter 
    def p(self, value): 
        self._p = value 

并做了以下事情

obj = A(10) 
print(obj.p) 

然后我得到了以下输出:

10

所以,我想知道,@p.getter 在这里的实际用途是什么,当@property 它自己能够给我们 _q 的值时

请您参考如下方法:

@property.getter 装饰器在你想在子类中覆盖父类的 getter 时很有用。它允许您轻松地从父类“复制”属性并仅覆盖 getter,保持 setter 和 deleter 不变。

例子:

class Parent: 
    @property 
    def p(self): 
        return 'parent' 
 
    @p.setter 
    def p(self, value): 
        print('setting p to', value) 
 
    @p.deleter 
    def p(self): 
        print('deleting p') 
 
class Child(Parent): 
    @Parent.p.getter 
    def p(self): 
        return 'child' 
 
print(Parent().p)  # output: parent 
print(Child().p)   # output: child 
Child().p = 3      # output: setting p to 3 
del Child().p      # output: deleting p