python中集合类属性的继承

2024-10-06 10:00:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个基本的抽象类,它具有保存所有已创建实例集的机制。在

class Basic(object):
    __metaclass__ = ABCMeta
    allInstances = set()

    def __init__(self, name):
        self.allInstances.add(self)

    def __del__(self):
        self.allInstances.remove(self)

问题是setallInstances保存所有子类的实例。我应该为每个子类分别添加这些行还是有方法为基本类中的每个子类创建集合?在


Tags: 实例nameselfobjectbasicinitdef抽象类
1条回答
网友
1楼 · 发布于 2024-10-06 10:00:27

thnxjornsharpe,在阅读了您的评论、一些文档和文章之后,MyMeta class:

from abc import ABCMeta

class MyMeta(ABCMeta):
    def __init__(cls, name, bases, dct):
        super(MyMeta, cls).__init__(name, bases, dct)
        cls.allInstances = set()

父类

^{pr2}$

另一种方式

from abc import ABCMeta, abstractmethod

class Basic(object):
    __metaclass__ = ABCMeta

    allInstances = None 

    def __init__(self):
        if self.__class__.allInstances is None:
            self.__class__.allInstances = set()
        self.__class__.allInstances.add(self)

    def __del__(self):
        self.__class__.allInstances.remove(self)

相关问题 更多 >