假设我有类似的东西:
def a(b):
def c(d):
# do someting
# ...
# ...
return something_else
return c
然后是这个
q = a(54)
w = a(97)
e = a(12)
是否有任何方法可以知道q和w是否都由a创建?还是我可以检查一下?
虽然我要做一个空的类,然后从那个覆盖__call__并使用issubclass进行初始化,但是似乎有点hacky(并且如果它实际上是一个正常的功能,则会出现错误),也许还有更好的选择。
>谢谢。
答案 0 :(得分:1)
您可以鸭打它:
def a(b):
def c(d):
# do stuff
return stuff
c.created_by = 'a'
return c
因此,当您使用它时...
q = a(54)
w = a(97)
q.created_by == w.created_by # True
因为我不知道您为什么要尝试这样做或无法真正理解问题,所以无法判断,但是我个人认为这比通过类来做是一个更大的技巧:
class A(object):
def __init__(self, b):
self.b = b
class C(A):
def do_stuff(self, d):
return self.b * d
q = C(54)
w = C(97)
isinstance(q, A) # True