python - 检查内部函数是否由相同的函数创建
问题描述
假设我有类似的东西:
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(如果它实际上是一个正常功能,会引发),也许有更好的选择。
谢谢。
解决方案
你可以躲开它:
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
推荐阅读
- excel - 如果第 1 列等于值,则 Excel 列比较在第 2 列中找到最大值
- github - 配置多个遥控器时的Git pull
- javascript - typescript vs indexOf中的二进制搜索 - 如何正确获得性能
- python - 我可以从“for”循环中调用一个对象吗?
- java - 无法点击网站上的几个链接,其余的可以使用 Selenium 进行点击
- docker - Kubernetes 上的 Docker
- sql - 如何将另一个表链接到我的触发器?
- ios - Firebase 动态链接不会使用 ios 13 在 iPhone 8 上打开应用
- rest-assured - 如何提取没有“名称”的休息响应
- php - Laravel 合并指向一个表的两个关系的结果