gpt4 book ai didi

python - 在 python 中使用属性的 getter

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:16 25 4
gpt4 key购买 nike

我正在研究属性,但无法理解 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

关于python - 在 python 中使用属性的 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51244348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com