python类实例变量inheren和类变量inheren

2024-04-18 01:33:03 发布

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

代码如下:

因为Iter类继承了解析器类,class Iter(Parser):

用解析器类变量定义重复但特定于Iter类的变量是否没有必要

意义

self.totalEntriesI只是解析器类totalEntires中变量值的接收者,代码中显示为Parser.totalEntires,因此可以使用该值进行工作

但是这有必要吗

我能做到同样的事情吗

class Iter(Parser):


def __init__(self, Parser):

    self.totalEntriesI = Parser.totalEntries
    self.perPageI = Parser.perPage
    self.currentPageI = Parser.currentPage

拥抱和亲吻


Tags: 代码selfparser解析器定义initdef事情
1条回答
网友
1楼 · 发布于 2024-04-18 01:33:03

对,这是不必要的。Parser的类属性(“变量”)在其子类Iter上也可用

如果如图所示将它们分配给实例属性,那么每个Iter实例将获得自己的值副本,如果以后需要对每个实例进行修改,那么这些值将非常有用,否则会浪费空间和注意力:)

需要注意的一个微妙之处是:如果随后通过子类Iter将一个值赋给这些属性之一,那么Iter将获得它自己的属性副本。例如:

>>> class A():  my_attr = 'foo'
>>> class B(A): pass

如你所料

>>> A.my_attr == B.my_attr == 'foo'
True

但是,请注意:

>>> B.my_attr = 'bar'
>>> B.my_attr
'bar'
>>> A.my_attr
'foo'

相关问题 更多 >

    热门问题