![](/img/trans.png)
[英]Calling a function with its previous return value as an argument in a while loop in 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
您可以使用**kwargs
和setattr
向對象添加可變數量的參數。
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.