我想要一个python类,它部分由其他类的特定方法组成,这些方法在“composited class”中对self
进行操作。我该怎么做?在
例如,如果我想在我的新类“theClass”中包含来自classA和classB的特定方法:
# Some classes to "inherit" from
class classA(object):
def methA1(self, value):
self.attrib = value*1
def methA2(self, value):
self.attrib = value*2
class classB(object):
def methB1(self, value):
self.attrib = value*3
def methB2(self, value):
self.attrib = value*4
# The class I want to build
class theClass(object):
# WHAT TO DO HERE?
# -------------------
methA1 = classA.methA1
methB2 = classB.methB2
# -------------------
# /WHAT TO DO HERE
# add additional methods...
def methC(self, value):
self.attrib = value*5
# I want the following behavior
instance = theClass()
instance.methB2(5) # sets instance.attrib to 20
instance.methA2(5) # error, does not exist
您可以使用mixin:
如果Mixin类封装了一些您希望添加到多个类中的功能单元,Mixin就有意义了。在
如果方法不能自然地分解成功能单元, 还有另一种选择:
^{pr2}$这与您已经发布的备选方案非常相似,只是它将所有类放在一个平等的基础上,最初方法与任何特定类都没有关联。这可能更可取,这样
theClass
不会通过从它不显式依赖的类(例如classA
)获取并获取方法来“破坏封装”。在相关问题 更多 >
编程相关推荐