簡體   English   中英

Python-對象的參數及其值作為函數的參數

[英]Python - parameter of an object and its value as argument of a function

我想創建一個通用函數,將具有不同類型參數的不同類型的對象作為參數,例如:

def func(obj, param, param_values):
    for param_value in param_values:
        obj.setParam(param=param_value)
        # do some stuff
    end

現在,我想使用具有不同參數名稱的不同對象來調用該函數,例如:

func(obj1(), width, {1,2,3,4})
func(obj2(), height, {4,5,6})

但是,當我以這種方式編寫它時,出現一個錯誤,說“ param”不是obj1和obj2的參數。

如何編寫我的函數,使其讀取的是“ param”的值而不是單詞“ param”? “ param_value”也一樣,因為我預計它可能導致相同的問題。

使用setattr將屬性添加到對象。

例如:

class Foo:
    def __init__(self):
        self.a = "hi"

foo = Foo()
foo.a # "hi"

def func(obj, param, param_values):
    setattr(obj, param, param_values)

func(foo, "b", [1,2,3])

foo.b # [1,2,3]

我認為您正在尋找setattr函數。

例如:

def func(obj, param, param_values):
    for param_value in param_values:
        setattr(obj, param, param_value)
        # do some stuff
    end

您可以使用**kwargssetattr向對象添加可變數量的參數。

class Foo:
    def __init__(self):
        pass

def func(obj, **kwargs):
    for k,v in kwargs.items():
        setattr(obj,k,v)

foo = Foo()

func(foo, width={1,2,3,4}, height={4,5,6})

print("width: {}".format(foo.width))
print("height: {}".format(foo.height))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM