今天在类的内部实例化对象的时候,发现一个有趣的事,上代码
class A: a = None def __init__(self,name): self.name = name self.age = '' def __new__(cls, *args, **kwargs): if not cls.a: cls.a = object.__new__(cls) return cls.a obj = A(4) obj.age = 18 print(obj.__dict__) obj1 = A(3) print(obj.__dict__)
输出结果为
{'name': 4, 'age': 18} {'name': 3, 'age': ''}
即使单例模式可以是开辟的对象空间地址相同,但是还是无法得到原对象空间中的属性,
每当对同一个类重新开辟一个对象空间的时候,就会把原对象空间清空, 清空, 清空