def foo1(opt, *args, **kwargs):在這裡,opt是確定的參數,不確定的參數有args和kwargs,args的資料型態為tuple, kwargs的資料型態為dict。
# expressions
foo1(1, True, "hello", data = "world", size = 8)上面這一行呼叫了foo1,並傳遞五個參數值,進入foo1後,參數分別為:
opt = 1
args = (True, "hello")
kwargs = {"data" : "world", "size" : 8}
在使用繼承類別時,如果有多種形態的繼承類別,利用傳遞不確定的參數值,可以做到彈性的呼叫。
Python也可以傳遞不確定的屬性給物件:
class base():利用setattr和getattr這兩個內建函式,做到動態賦予物件屬性。這種寫法也是為了彈性設計。
def setParameters(self, **params):
for key, value in params.items():
setattr(self, key, value)
def run(self, out, **options):
data = getattr(self, "data", "")
length = getattr(self, "len", 0)
沒有留言:
張貼留言