classFather:
name ='father'def__init__(self):print("In Father __init__()",self.__class__.name)returndef__new__(cls)-> Any:print("In Father __new__()", cls.name)returnsuper().__new__(cls)def__enter__(self):print("In Father __enter__()")return"Foo"def__exit__(self,type, value, trace):print("In Father __exit__()")
@classmethoddefShow(cls):print("In Father Show()", cls.__name__,cls.name)classSon(Father):#name = 'son'def__init__(self)->None:print("In Son __init__()", self.__class__.name)super().__init__()def__new__(cls)-> Any:
cls.name ='son'print("In Son __new__()", cls.name)returnsuper().__new__(cls)print('-----------------------')
a = Son.Show()print('-----------------------')
a = Son().Show()print('-----------------------')
a = Son.Show()print('-----------------------')print(Son.name, Father.name)
执行结果
-----------------------
In Father Show() Son father
-----------------------
In Son __new__() son
In Father __new__() son
In Son __init__() son
In Father __init__() son
In Father Show() Son son
-----------------------
In Father Show() Son son
-----------------------
son father