Может кто-нибудь объяснить мне, почему это работает (в Python 2.5):
class Foo(object):
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
но это не так:
class Foo():
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
Последний возвращает "AttributeError: класс Foo не имеет атрибута" __subclasses__
", но я не уверен, почему. Я знаю, что это связано со старыми классами против классов нового стиля, но я не понимаю, почему это сделает эту функцию недоступной.
Уточнение: Я ищу, чтобы понять WHY __subclasses__()
недоступен в старом стиле, я понимаю, что метод не существует для классов старого стиля, но я не получить то, что касается нового стиля, что делает эти новые функции возможными.