我对使用Python是个新手,我正在尝试实现一个在C#中经常使用的结构。我需要从一堆不同的表中读入并处理数据。对于每个表,有少量代码需要有所不同,但大部分代码都可以重用。因此,我尝试创建一个抽象基类来处理大多数处理,并为特定于表的处理调用一个抽象方法。然后,我为每个表创建实现这些函数的类的具体实现。不幸的是,基类中的共享方法调用的是抽象方法,而不是子类中实现的方法。在
这是抽象类的精简版本。在
from abc import ABC, abstractmethod, ABCMeta
class AbstractDataResampler(object):
__metaclass__ = ABCMeta
def __init__(self, database):
self.client = database
self.__configure_database()
def __resample_data(self):
raise NotImplementedError()
def get_resampled_data(self):
return __resample_data()
下面是一个具体实现的精简版本。在
^{pr2}$当我创建SpecificDataResampler的实例并调用get_resampled_data()时,我得到一个NotImplementedException,因为调用的是基版本的\uU resample\u data,而不是实现的子版本。在
resampler = SpecificDataResampler(db)
resampler.get_resampled_data()
有没有可能完成我在Python3中要做的事情?一、 子类调用在抽象基类中实现的方法,而该方法使用子类重写的方法?在
我很抱歉,如果这是一个重复,或有一个简单的工作错误。我在网上尝试了很多建议,但都没有奏效(我认为很多都是针对python2.7的)。在
注意:这是事物的简化版本。SpecificDataResampler实际上是一个单例,位于this pattern之后,因此SpecificDataResampler实际上是一个嵌套的内部类。然而,我在没有使用singleton模式的情况下对此进行了测试,并收到了相同的错误。在
目前没有回答
相关问题 更多 >
编程相关推荐