Вы, кажется, недопонимаете вещи. Классы представляют отдельное пространство имен для себя, поэтому вполне возможно создавать функции с одинаковым именем в разных классах. Эти функции не связаны никаким другим способом, кроме их аналогичного имени.
Запуск <classname>.xyz()
просто вызывает xyz()
и печатает соответствующее сообщение.
Даже если существует связь между классом, т.е. суб-причислять отношения формы:
class abc:
@staticmethod
def xyz():
print 'class_abc'
class abc1(abc):
@staticmethod
def xyz():
print 'class_abc1'
class abc2(abc1):
@staticmethod
def xyz():
print 'class_abc2'
Самое последнее определение xyz
, отменяют ранее существующие записи для него, и эффект будет являться такой же, то есть abc2.xyz()
распечатать class_abc2
, abc1.xyz()
принты class_abc1
и прочее.
Также обратите внимание, что вы используете Python 2.x
, но на самом деле не наследуете от object
. Это не создаст класс в том смысле, в котором большинство людей знают с сегодняшнего дня, посмотрите на What is the difference between old style and new style classes in Python?, чтобы лучше понять, что это влечет за собой.
Ваш отступ для первого примера. –
На самом деле это переопределение, которое отличается от перегрузки. Но, где это происходит в этом примере? –
Помимо проблемы идентификации, вопрос не имеет смысла, поскольку в этом примере нет подкласса. – lucasnadalutti