我有一个关于简单策略设计模式的更具设计性质的问题
假设我有一个接口:
class RenewInterface:
def __init__(*args, **kwargs):
self.var1 = {}
self.var2 = []
if args:
for i in args:
inst = i()
self.var1[inst.__class__.__name__] = inst
@abstractmethod
def renew(*args, **kwargs)
Do some stuff and call renew in self.var1[inst__class__.__name__]
class ChildClass(RenewInterface):
def __init__(*args, **kwargs):
super(ChildClass, self).__init__(*args, **kwargs)
def renew(self, *args, **kwargs)
Do more stuff
当我从那个类继承时,如果我选择调用超类__init__
(上面的代码)。如果我没有参数,那么我只将var1
和var2
公开给子类,但是如果我出于某种原因有参数,并且我用super(ChildClass, self).__init__(*args, **kwargs)
调用了父类(renewanterface),并且由于某种原因参数是ChildClass的类,那么我想我应该从自身实例化ChildClass?因为我不关心超类中的变量,所以可以:
__init__
,然后再次使用RenewanInterface __init__
进行实例化我都试过了,都很管用,但我不知道最“Python”的方法是什么?或者更重要的是,它是否与版本2.6、2.7和python不同>=3.3.
我已经阅读了这些文件,并试图谷歌,但我没有找到任何结论性的信息:(
敬礼
如果我错了,请纠正我
你想知道的似乎是处理方法重载的最python方法,特别是init方法来解决你的问题
选项包括: 1.重载方法,但不要调用“超类”方法 2.不要使方法过载。保留要调用的超类方法
这不是一个“pythonic”问题,而是与OO有关。 基类方法提供了一个默认实现。如果不希望使用默认实现,请重写该方法。据我所知,您对子类的默认实现不满意。覆盖它
相关问题 更多 >
编程相关推荐