Как воспроизвести эту ошибку с как можно меньшим количеством строк:
>>> class C:
... def f(self):
... print "hi"
...
>>> C.f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method f() must be called with C instance as
first argument (got nothing instead)
Сбой из-за TypeError, потому что вы сначала не создали экземпляр класса, у вас есть два варианта: 1: либо создать методstatic, чтобы вы могли запустить его статическим способом, или 2: создать экземпляр своего класса, чтобы у вас был экземпляр для запуска метода.
Похоже, вы хотите запустить метод встатическим способом, сделайте это:
>>> class C:
... @staticmethod
... def f():
... print "hi"
...
>>> C.f()
hi
Или, что вы, вероятно, имели в виду, это использование экземпляра экземпляра, как это:
>>> class C:
... def f(self):
... print "hi"
...
>>> c1 = C()
>>> c1.f()
hi
>>> C().f()
hi
Если вас это смущает, задайте следующие вопросы:
- В чем разница между поведением статического метода и поведением обычного метода?
- Что делаетэто означает создать экземпляр класса?
- Различия между тем, как выполняются статические методы, по сравнению с обычными методами.
- Различия между классом и объектом.