class OpenFile(object):
def __init__(self, name=None):
print('执行%s的init方法'%name)
self.name = name
self.f = None
def __new__(cls, *args, **kwargs):
print('执行%s的new方法'%args[0])
# return super().__new__(cls)
if not hasattr(cls, '_instancex'):
print('----->')
cls._instancex = super().__new__(cls)
return cls._instancex
def open(self):
f = open(R"D:\dde_header.txt",'r')
s = f.read()
print('%s打开文件'%self.name)
self.f = f
def get_obj_name(self):
print('我的实例名是%s'%self.name)
def __del__(self):
print('执行%s的析构方法'%self.name)
f = self.f
if f:
f.close()
a = OpenFile('A')
b = OpenFile('B')
print(bool(a == b))
a.open()
b.open()
a.open()
c = OpenFile('C')
a.get_obj_name()
执行A的new方法
----->
执行A的init方法
执行B的new方法
执行B的init方法
True
B打开文件
B打开文件
B打开文件
执行C的new方法
执行C的init方法
我的实例名是C
执行C的析构方法
[Finished in 0.1s]