Angenommen, ich möchte den folgenden Code ausführen Python 3.6.3:Kopieren 'spezielle' Methoden in Python 3.x
class Foo:
def bar(self):
return 1
def __len__(self):
return 2
class FooWrapper:
def __init__(self, foo):
self.bar = foo.bar
self.__len__ = foo.__len__
f = Foo()
print(f.bar())
print(f.__len__())
print(len(f))
w = FooWrapper(Foo())
print(w.bar())
print(w.__len__())
print(len(w))
Hier ist die Ausgabe:
1
2
2
1
2
TypeError: object of type 'FooWrapper' has no len()
So __len__()
funktioniert, aber len()
nicht? Was gibt und wie gehe ich richtig kopieren __len__
methode von Foo
bis FooWrapper
?
By the way, ist das folgende Verhalten universell für alle ‚spezielle‘ Methoden, nicht nur __len__
: zum Beispiel __iter__
oder __getitem__
nicht funktionieren entweder (sofern dies nicht direkt genannt)