多实例计数
class MyClass(object):
"""多实例计数"""
__num = 0
def __new__(cls, *args, **kwargs):
cls.__num += 1
return object.__new__(cls)
# 方法1
# def __del__(self):
# MyClass.__num -= 1
# 方法2
@classmethod
def __del__(cls):
cls.__num -= 1
# 方法1
# @staticmethod
# def get_nums():
# return MyClass.__num
# 方法2
@classmethod
def get_nums(cls):
return cls.__num
def main():
mc1 = MyClass()
print(mc1.get_nums())
mc2 = MyClass()
print(mc1.get_nums())
del mc2
print(MyClass.get_nums())
del mc1
print(MyClass.get_nums())
if __name__ == '__main__':
main()
输出:
1
2
1
0