小编Pie*_*lla的帖子

python中类变量的继承

试图在python中理解oop我遇到了困扰我的情况,我无法找到令人满意的解释......我正在构建一个Countable类,它有一个计数器属性,可以计算该类有多少个实例已初始化.我希望在初始化给定类的子类(或子类)时也增加此计数器.这是我的实现:

class Countable(object):
    counter = 0
    def __new__(cls, *args, **kwargs):
        cls.increment_counter()
        count(cls)
        return object.__new__(cls, *args, **kwargs)

    @classmethod
    def increment_counter(cls):
        cls.counter += 1
        if cls.__base__ is not object:
            cls.__base__.increment_counter()
Run Code Online (Sandbox Code Playgroud)

哪里count(cls)有调试目的,后来我把它写下来.

现在,让我们有一些这样的子类:

class A(Countable):
    def __init__(self, a='a'):
        self.a = a

class B(Countable):
    def __init__(self, b='b'):
        self.b = b

class B2(B):
    def __init__(self, b2='b2'):
        self.b2 = b2

def count(cls):
    print('@{:<5}  Countables: {}  As: {}  Bs: {}  B2s: {}'
          ''.format(cls.__name__, Countable.counter, A.counter, B.counter, B2.counter))
Run Code Online (Sandbox Code Playgroud)

当我运行如下代码时:

a = A()
a = A()
a …
Run Code Online (Sandbox Code Playgroud)

python inheritance class-variables python-2.7

7
推荐指数
1
解决办法
3623
查看次数

标签 统计

class-variables ×1

inheritance ×1

python ×1

python-2.7 ×1