w module a.pyPrzypisywanie metoda moduł do zmiennej klasy lub zmiennej instancji
def task():
print "task called"
a = task
class A:
func = task # this show error unbound method
#func = task.__call__ # if i replace with this work
def __init__(self):
self.func_1 = task
def test_1(self):
self.func_1()
@classmethod
def test(cls):
cls.func()
a()
A().test_1()
A.test()
wyjściowa:
task called
task called
Traceback (most recent call last):
File "a.py", line 26, in <module>
A.test()
File "a.py", line 21, in test
cls.func()
TypeError: unbound method task() must be called with A instance as
first argument (got nothing instead)
W tym module można łatwo przypisać funkcję do zmienna. Kiedy wewnątrz klasy spróbuj przypisać funkcję poziomu modułu do zmiennej klasy func = zadanie pokazuje błąd, aby usunąć ten błąd muszę go zastąpić func = zadanie .__ call__ Ale kiedy przypisać do zmiennej instancji jego pracy siebie. func_1 = zadanie.
Moje pytanie brzmi: dlaczego nie mogę przypisać funkcji poziomu modułu do zmiennej klasy bez __call__ i gdy działa ta sama funkcja, którą mogę przypisać do zmiennej instancji.
Dodatkowo, warto zauważyć, że kompiluje i działa zgodnie z oczekiwaniami w python 3.x (w szczególności 3.6). – Ori