考慮下面的示例代碼:繼承在Python 3中如何與kwargs一起工作?
#!/usr/bin/python3
class Parent:
def __init__(self, **kwargs):
# Expect data1, data2
self.values = kwargs
# Accessor method to set object values
def setvalue(self, k, v):
self.values[k] = v
# Accessor method to get/return object values
def getvalue(self, k):
return self.vlaues.get(k, None)
class Child(Parent):
def __init__(self, **kwargs):
# Expect data3, data4
self.values = kwargs
# Accessor method to set object values
def setvalue(self, k, v):
self.values[k] = v
# Accessor method to get/return object values
def getvalue(self, k):
return self.values.get(k, None)
def main():
new_object = Child(data1 = 'abc', data2 = 'def',
data3 = 'ghi', data4 = 'jkl')
for v in new_object.values:
print('{}: {}'.format(v, new_object.getvalue(v)))
new_object.setvalue('data1', 'tuv')
new_object.setvalue('data4', 'xyz')
for v in new_object.values:
print('{}: {}'.format(v, new_object.getvalue(v)))
if __name__ == "__main__": main()
我不知道我怎麼能走的kwargs
的flexibity的優勢,同時還採用了一些基本的繼承。在我寫的實際應用程序中,每個類實際上都有許多與其相關的不同屬性。
我擔心的是,因爲kwargs
非常靈活(並且模糊不清),我不能保持我的課的親子關係 - data1
,data2
,data3
和data4
都將得到應用到Child
類。
如何確保data1
和data2
是Parent
超類的屬性,並且data3
和data4
是Child
子類的屬性?
我試圖設計我的類結構「正確的方式」,同時保持代碼有點簡單和優雅。它甚至重要嗎?也許我會在這個問題上走錯路。有一個更好的方法嗎?
對不起,如果我在這裏漫步。只是想明白。在此先感謝您的幫助和耐心......
在Parent類的屬性和Child類的屬性之間進行區分是沒有意義的。整個繼承點 - 用任何語言 - 是一個孩子*是一個父母。 – 2014-10-06 20:11:41