Mam strukturę coś takiego:połączeń Python obiektu jako funkcji bez przechodzenia wywołującego obiektu
def foobar():
print('FOOBAR!')
class SampleClass:
foo = foobar
def printfunc(self):
self.foo()
To nie działa, ponieważ pierwotna funkcja foobar nie może obsłużyć self
były przekazywane do niej - - na początku nie była częścią żadnej klasy ani obiektu. Python nie pozwoli mi dodać dekoratora @staticmethod
.
Nie mam żadnej kontroli nad definicją foobar
i może być konieczne przesłonięcie wartości foo
w podklasach.
Jak mogę wywołać funkcję foo, nie przekazując obiektu, który ją wywołuje?
Jestem trochę zdezorientowany. Dlaczego nie zdefiniować funkcji 'foobar' w swoim' SampleClass'? – Huey
Dlaczego nie po prostu 'def foo (self): foobar()'? – user2357112
@Huey Ponieważ w tym konkretnym przypadku jest to * nie * coś, co mogę zdefiniować. Jest to metoda zewnętrzna i zostanie nadpisana inną metodą zewnętrzną w podklasie. –