跳转至

多实例计数


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