[英]magic method for passing object in function as argument?
當我將對象作為函數的參數傳遞時,是否有任何魔術方法可以調用?
class Test:
def __init__(self, a, b):
self.a = a
self.b = b
def __???__(self):
return (self.a, self.b)
test = Test(0, 1)
some_function(test) # I'd like to pass parameters (0, 1) here
不,函數的參數不會以任何方式被特殊對待。 這只是另一個分配(分配給函數的參數名稱)。
如果需要將a
和b
視為單獨的參數,請使Test
一個序列 ,然后將其傳遞給*sequence
調用語法以將序列擴展為單獨的參數。 您可以通過將其設為迭代器類型來使其成為序列:
class Test:
def __init__(self, a, b):
self.a = a
self.b = b
def __iter__(self):
return iter((self.a, self.b))
test = Test(0, 1)
some_function(*test)
演示:
>>> def some_function(a, b):
... print(f'a = {a!r}\nb = {b!r}')
...
>>> test = Test(0, 1)
>>> some_function(*test)
a = 0
b = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.