Следующий фрагмент кода выдает ошибку в python2, но без ошибки с python3
class Steps(object):
def step(self, msg="Default"):
if not hasattr(self, "funky_attr"):
print('No attr')
print(self)
print(msg)
class FirstTest(Steps):
@classmethod
def test_setup(cls):
cls.step("This is the message")
if __name__ == '__main__':
C = FirstTest()
C.test_setup()
С python 2 выдает ошибку:
TypeError: несвязанный метод step () mustвызываться с экземпляром CifsTest в качестве первого аргумента (вместо этого получен экземпляр str)
В то время как с питоном 3 он работает нормально:
Нет атрибута
Этосообщение # Обратите внимание, здесь 'self' это str
По умолчанию
Это правильное поведение?
Python3 позволяет вызывать метод экземпляра из методов класса?