![]() |
1
5
简而言之:不,你想要的是不可能的。
长话短说的答案是,你所认为的一个对象的“地址”决不是。
对您要求的具体答复:
|
![]() |
2
4
Here is the code Here are the tests .
这是我们的一部分
GarlicSim
installing
网上甚至有一个python3版本
Python 3 fork of GarlicSim
. 如果您想使用,请安装它
|
![]() |
3
1
对于第3点和第4点,我猜您正在寻找类似
但是,不建议这样做,因为这样会使您或阅读您的代码的人很难快速了解您的代码
对于第1点,您可以执行以下操作:
对于第2点,给定字符串'garlicsim'_lib.simpacks.cap俘,您可以通过以下方式获取它引用的对象:
这假设您已经导入了带有
这只适用于最简单的情况(
然而,用这种方式编码是非常不寻常的。 |
![]() |
4
0
Twisted的#2与Twisted/python相同/反射.py. 你需要一些类似的东西来创建一个基于字符串的配置系统,比如Django的网址.py配置。
您正在寻找的其他东西对Python环境有足够的限制,因此没有通用解决方案。
你的#3定义不清。如果我这样做了
那么搜索代码是否应将其作为“步骤”找到? 我能想到的最简单的实现就是简单地搜索所有模块并查找顶级元素,这些元素正是您想要的
在这里,您可以看到“handler”实际上位于上一个表达式return的uu中,使其成为最短的名称。 如果你想要别的东西,比如递归地搜索所有模块的所有成员,那么只需要编写代码。但正如“uux”示例所示,会有惊喜。另外,这并不稳定,因为导入另一个模块可能会使另一个对象路径可用且更短。
不管怎样,你写了
因此你的问题的答案是“不,没有这样的模块。” 让您的问题更加困惑的是,Python的C实现已经定义了一个“对象地址”。这个 docs for id() 说:
您要查找的是对象的名称或路径。不是“Python对象地址” |