2014年7月23日 星期三

Python - 不確定參數與屬性

Python傳遞不確定的參數值:
def foo1(opt, *args, **kwargs):
    # expressions
在這裡,opt是確定的參數,不確定的參數有args和kwargs,args的資料型態為tuple, kwargs的資料型態為dict。
foo1(1, True, "hello", data = "world", size = 8)
上面這一行呼叫了foo1,並傳遞五個參數值,進入foo1後,參數分別為:

opt = 1
args = (True, "hello")
kwargs = {"data" : "world", "size" : 8}

在使用繼承類別時,如果有多種形態的繼承類別,利用傳遞不確定的參數值,可以做到彈性的呼叫。



Python也可以傳遞不確定的屬性給物件:
class base():

    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)
利用setattr和getattr這兩個內建函式,做到動態賦予物件屬性。這種寫法也是為了彈性設計。

沒有留言: