我不太确定如何最好地解释我想要的,所以我只显示一些代码:
class Stuffclass():
def add(self, x, y):
return x + y
def subtract(self, x, y):
return x - y
# imagine that there are 20-30 other methods in here (lol)
class MyClass:
def __init__(self):
self.st = Stuffclass()
def doSomething(self):
return self.st.add(1, 2)
m = MyClass()
m.doSomething() # will print 3
# Now, what I want to be able to do is:
print m.add(2, 3) # directly access the "add" method of MyClass.st
print m.subtract(10, 5) # directly access the "subtract" method of MyClass.st
m.SomeMethod() # execute function MyClass.st.SomeMethod
我知道我可以做这样的事情:
class MyClass:
def __init__(self):
self.st = Stuffclass()
self.add = self.st.add
self.subtract = self.st.subtract
...但这需要手动分配所有可能的属性。
我正在编写所有类,所以我可以保证没有名称冲突。
使 MyClass 成为 Stuffclass 的子类是行不通的,因为我实际上是在基于插件的应用程序中使用它,其中 MyClass 使用import动态加载其他代码。这意味着 MyClass 不能从插件继承,因为插件可以是遵循我的 API 的任何东西。
请指教?