2015-07-24 5 views
2

Код ниже:питон - экземпляр класса переменная неотделимость и переменная неотделимость класса

С Iter класс наследуется класс Parser, class Iter(Parser):

это unnessary определить дубликат, но конкретные переменные Iter класса с переменным классом Parser ?

Значение

self.totalEntriesI только получатель значения переменного в классе Parser, известном как totalEntires показан в коде, как Parser.totalEntires так, что работа может быть сделана со значением.

однако это необходимо?

я мог достичь того же с вне делать это

class Iter(Parser): 


def __init__(self, Parser): 

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

Объятия и поцелуи

ответ

2

Правильные, это ненужным. Атрибуты класса («переменные») 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' 
+0

Фантастическая ответ @BrianO спасибо –

+0

Aww, лузга - спасибо :) и ты приветствовать – BrianO