私が欲しいものを説明する最善の方法が本当にわからないので、いくつかのコードを示します。
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 に従うものであれば何でもよいためです。
アドバイスをお願いします。