我工作的一個抽象層到數據庫中,我有一個超類中定義與此類似:覆蓋類方法來定義Kwargs - 哪個是Pythonic?
class Test():
__init__(self, object):
self.obj = object
@classmethod
def find_object(cls, **kwargs):
# Code to search for object to put in parameter using kwargs.
return cls(found_object)
我再打破該超成更具體到他們所代表的對象的子類。
class Test_B(Test):
# Subclass defining more specific version of Test.
現在,Test的每個單獨的子類都有預定義的搜索條件。例如,Test_B需要a = 10,b = 30,c =「Pie」的對象。
哪個會更「Pythonic」?從超類使用find_object方法:
testb = Test_B.find_object(a=10, b=30, c="Pie")
或覆蓋find_object方法期望的a,b,和c作爲參數:
@classmethod
def find_object(cls, a, b, c):
return super().find_object(a=a, b=b, c=c)
testb = Test_B.find_object(10, 30, "Pie")
爲什麼不寫調度員函數,選擇正確的類來傳遞kwargs呢? –