Мне трудно понять, какие методы вызываются при создании объекта старого стиля.
Проведя небольшое исследование, я обнаружил, что это различие применимо только к python 2.7, а не к python 3 Однако я тестирую методы в коде:
class OldClass():
pass
class NewClass(object):
pass
old = OldClass()
new = NewClass()
print(type(old))
print(type(new))
print(old.__class__) #It retrieves __main__
print(old.__new__) #Never called
print(old.__init__) #Never called
И вот результат:
<type 'instance'>
<class '__main__.NewClass'>
__main__.OldClass
Traceback (most recent call last):
File "main.py", line 29, in <module>
print(old.__init__)
AttributeError: OldClass instance has no attribute '__init__'
Я продолжаю исследования для этого топи c, вот некоторые ссылки с некоторой связанной информацией:
Класс нового стиля против старого стиля: https://www.youtube.com/watch?v=KwpnXqnVx2o
переполнение стека нового стиля против класса старого стиля: Что такое разница между классами старого и нового стиля в Python?
Если я что-то найду, я обновлю сообщение