Классы старого стиля против классов нового стиля - PullRequest
0 голосов
/ 14 июня 2019

У меня была небольшая путаница относительно старых и новых классов стилей в Python.Таким образом, в основном в Python 3.X есть только новые классы стилей, которые могут наследовать и не наследовать от других классов, в то время как в Python 2.X новые классы стилей должны быть подклассами другого класса или объекта, в то время как классы старого стиля могут 'не наследуют вообще.Это верно?

1 Ответ

1 голос
/ 14 июня 2019

Нет.В Python 2, чтобы сделать класс классом нового стиля, он должен был унаследоваться от object (или от какого-то суперкласса, который это сделал).Классы старого стиля наследовали бы другие классы старого стиля, но базовые классы не наследовали от объекта;они были просто написаны class MyClass:.

Главным образом, когда появились новые классы, люди начали писать class MyClass(object):, и для 99% использований все оставалось прежним.Различия заключались в методах двойного подчеркивания и других низкоуровневых деталях, которые не имели значения для большей части кода.

Причина заключалась в том, чтобы устранить разницу между встроенными типами и пользовательскими классами;Рассуждения Гвидо можно прочитать здесь .

И теперь, когда это история, в Python 3 просто есть классы.Python 2.2 представил классы нового стиля и был выпущен 21 декабря 2001 .Вам не нужно знать это.

...