簡體   English   中英

傳遞函數中的對象作為參數的魔術方法?

[英]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

不,函數的參數不會以任何方式被特殊對待。 這只是另一個分配(分配給函數的參數名稱)。

如果需要將ab視為單獨的參數,請使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.

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