Python 中的一个特殊魔术方法 __call__ 允许类的实例表现得好像它们是函数一样。 你可以“调用”它们,并将实例化过程中的参数,作为函数的参数来使用。
__call__(self, *args, **kwargs)
允许将类的实例作为函数调用。ins()本质上就是 ins.__call__. 请注意,__call__接受任意数量的参数;
代码示例
class Card:
def __init__(self, suit, rank):
self.suit = suit
self.rank = rank
def __call__(self, suit):
# 出老千, 改变当前牌的花色
self.suit = suit
print(self.suit, self.rank)
card = Card('Hearts', '8')
card('Spades')
print(card.suit)
Spades 8
Spades