0
所以我有Base
類與兩個子類。我的想法是,我將擁有一個包含所有可以插入其中一個子類的數據的模型。然後調用一個方法在每個子類上設置標題,然後將數據從Model
複製到Child
類實例。但是,我發現在第一個類實例(在這種情況下a)上調用add_header
方法之後,b也獲得了標題。哪一種讓我困惑,因爲我認爲發起的課程不會互相影響。我的問題是爲什麼會出現這種情況,可以避免嗎?Python繼承基類變量
class Base(object):
__model__ = None
headers = ['base_header','base_header2']
def add_header(self, *args):
for h in args:
self.headers.append(h)
def set_header_values(self):
for h in self.headers:
setattr(self, h, getattr(self.__model__, h))
class ChildOne(Base):
def __init__(self, model):
self.__model__ = model
class ChildTwo(Base):
def __init__(self, model):
self.__model__ = model
class Model(object):
foo = 'bar'
m = Model()
a = ChildOne(m)
b = ChildTwo(m)
a.add_header('tralala')
print b.headers // Output ['base_header','base_header2','tralala']
這是有點不清楚你在做什麼,爲什麼'header'不是一個實例變量呢? – timgeb
@timgeb標題包含一些「基本」標題,它們出現在兩個模型中 – Niels