gpt4 book ai didi

python - 仅当子类覆盖方法时才执行类属性的 copy()

转载 作者:行者123 更新时间:2023-11-28 23:01:43 24 4
gpt4 key购买 nike

我正在努力实现以下目标:

class Data(object):
def __init__(self, data):
self.data = data
self.valid = False
#Analyze and validate data
self.preprocess_data()
self.validate_data()

def preprocess_data():
pass

def validate_data():
#process data

class MyData(Data):
def __init__():
super(MyData,self).__init__(data)

def preprocess_data(self):
#preprocess it

当子类执行覆盖的preprocess_data方法时,我想自动执行如下操作: self.data = self.data.copy()

如何做到这一点(如果有的话)?我考虑过装饰 preprocess 但我不认为在基类中装饰的重写方法会继承“装饰”

最佳答案

class Data(object):
def __init__(self, data):
self.data = data
self.valid = False
#Analyze and validate data
self._preprocess_data()
self.validate_data()
def _preprocess_data(self):
if self.preprocess_data.im_func != Data.preprocess_data.im_func:
self.data = self.data.copy()
return self.preprocess_data()

这将测试self.preprocess_data 背后的函数是否为Data.preprocess_data;如果不是,它会复制您的数据。当然,这需要您在类中调用 _preprocess_data,以便实际执行附加代码。

关于python - 仅当子类覆盖方法时才执行类属性的 copy(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749547/

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