Из вашего описания я угадываю код, подобный этому:
class Test(object):
def a(self, par1, par2='empty'):
print(self, par1, par2)
@classmethod
def b(cls, fjord):
print(fjord)
cls.a('par1', 'par2')
test = Test()
test.a('this', 'that')
test.b('cold')
В 2.7 это вылетает примерно так:
(<__main__.Test object at 0x00B4A710>, 'this', 'that')
cold
Traceback (most recent call last):
File "test.py", line 11, in <module>
test.b('cold')
File "test.py", line 7, in b
cls.a('par1', 'par2')
TypeError: unbound method a() must be called with Test instance as first argument
(got str instance instead)
Хотя в 3.2 он работает просто отлично - поскольку несвязанные методы больше не существуют, они просто функции.
Причина self
не в том, что экземпляр именно потому, что он вызывается из метода класса: метод класса не получает self
, поэтому он не может передать его.