【发布时间】:2018-05-02 20:25:43
【问题描述】:
当我将对象作为函数的参数传递时,是否有任何魔术方法会调用?
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
【问题讨论】:
-
不,没有。那会非常混乱。不过,您可以实现
__iter__并调用some_function(*test)。 -
Python 没有魔法。您可能希望看到 Ruby 的魔法。
-
另见this answer,由 Python 核心开发人员 Raymond Hettinger 撰写。
-
@ElisByberi 像
__len__、__add__和__repr__这样的方法通常被称为“魔术方法” -
@PM2Ring 他们当然称它们为魔法。他们用它们来耍花招!我仍然认为“显式胜于隐式”。
标签: python python-3.x arguments