调用类对象时如何清理?

时间:2021-04-17 01:37:09

标签: python

现在我有一个类可以将 kwargs 保存为字典。这是我的代码。

class A:

  def __init__(self):
    self.dict = {}

  def __call__(self, **kwargs):
    self.dict = kwargs
    return self

  def get(self):
    return self.dict

a = A()
print(a(i=1, j=2).get())
print(a.get())

调用 a.dict 时将重置 a()。当不带括号调用 a 时,我如何做同样的事情?所以最后一行 a.get() 将返回 {} 而不是 {i: 1, j: 2}

1 个答案:

答案 0 :(得分:2)

您始终可以返回代理对象而不是 A 实例以获得所需的语法。

class A:

  def __call__(self, **kwargs):
    return B(kwargs)

  def get(self):
    return {}

class B:

    def __init__(self, d):
        self.d = d

    def get(self):
        return self.d

a = A()
print(a(i=1, j=2).get())
print(a.get())