python - 重构 - 泛化派生 类
python - refactoring - generalizing derived classes
我在 Python
中有以下代码。有两个 类 A2
和 B2
共享函数 f1()
和 f2()
。它们的基数 类 不同,分别源自 A
和 B
。
我可以看到如何使用 templates
在 C++
中概括这一点。但我不确定该怎么做 Python
。
class A2(A):
def __init__(self):
A.__init__(self)
self._Z = Z('high')
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
# ... more functions ...
class B2(B):
def __init__(self):
B.__init__(self)
self._Z = Z('low')
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
# ... more functions ...
如果我理解你的问题,你可以试试 mixin class:
class Mixin(object):
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
class A2(A, Mixin):
def __init__(self):
A.__init__(self)
self._Z = Z('high')
class B2(B, Mixin):
def __init__(self):
B.__init__(self)
self._Z = Z('low')
我在 Python
中有以下代码。有两个 类 A2
和 B2
共享函数 f1()
和 f2()
。它们的基数 类 不同,分别源自 A
和 B
。
我可以看到如何使用 templates
在 C++
中概括这一点。但我不确定该怎么做 Python
。
class A2(A):
def __init__(self):
A.__init__(self)
self._Z = Z('high')
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
# ... more functions ...
class B2(B):
def __init__(self):
B.__init__(self)
self._Z = Z('low')
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
# ... more functions ...
如果我理解你的问题,你可以试试 mixin class:
class Mixin(object):
def f1(self):
return self._Z.f1()
def f2(self):
return self._Z.f2()
class A2(A, Mixin):
def __init__(self):
A.__init__(self)
self._Z = Z('high')
class B2(B, Mixin):
def __init__(self):
B.__init__(self)
self._Z = Z('low')