gpt4 book ai didi

python - 用常规属性覆盖描述符

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

是否可以通过派生类中的常规属性覆盖基类中的属性,如下所示:

class A(object):
@property
def x(self):
return self._x

@x.setter
def x(self, y):
self._x = y

class B(A):
def __init__(self, y):
self.x = y #the descriptor methods are not called and
#"x" is a regular attribute in the object dict.

我问的原因是因为我有一个复杂的基类,其中一个描述符属性通常执行复杂的计算。但是,在其中一个派生类中,返回值微不足道,而且必须用另一个描述符覆盖而不仅仅是常规存储属性似乎是一种浪费。

最佳答案

您可以简单地在 B 中重新声明 x:

class A(object):
@property
def x(self):
print("calculating x...")
return self._x

@x.setter
def x(self, y):
print('setting x...')
self._x = 10*y

class B(A):
x = None

def __init__(self, y):
self.x = y #the descriptor methods are not called and
#"x" is a regular attribute in the object dict.

b = B(3)
print(b.x)
# 3

关于python - 用常规属性覆盖描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52569579/

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