假设myapp/foo.py包含:
def info(msg):
caller_name = ????
print '[%s] %s' % (caller_name, msg)
Run Code Online (Sandbox Code Playgroud)
并myapp/bar.py包含:
import foo
foo.info('Hello') # => [myapp.bar] Hello
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望caller_name将其设置为__name__调用函数模块的属性(即'myapp.foo').如何才能做到这一点?
我知道is和asfor instanceof,但是反射isInstance()方法怎么样?
给定Python中的C类,如何确定该类定义的文件?我需要一些可以在C类或C语言实例中起作用的东西.
我这样做的原因是因为我一般都喜欢把属于同一文件夹的文件放在同一个文件夹中.我想创建一个使用Django模板将其自身呈现为HTML的类.基本实现应该根据定义类的文件名推断模板的文件名.
假设我在类"base/artifacts.py"中放置了一个类LocationArtifact,那么我希望默认行为是模板名称为"base/LocationArtifact.html".
是否有内置的方法,函数,API,普遍接受的方式等来转储Objective C中实例化对象的内容,特别是在Apple的Cocoa/Cocoa-Touch环境中?
我希望能够做类似的事情
MyType *the_thing = [[MyType alloc] init];
NSString *the_dump = [the_thing dump]; //pseudo code
NSLog("Dumped Contents: %@", the_dump);
Run Code Online (Sandbox Code Playgroud)
并显示对象的实例变量名称和值,以及可在运行时调用的任何方法.理想情况下,易于阅读的格式.
对于熟悉PHP的开发人员,我基本上寻找等效的反射函数(var_dump(),get_class_methods())和OO Reflection API.
我想Activity在一个URI中获取要发送的当前名称HttpRequest.有没有办法做到这一点,而没有专门指的是Activity?
我知道我能做到,myActivity.class.toString()但这只是一种硬编码"myActivity"的低效方式,因为我正在对我的静态引用Activity.是否有更通用的方法来使用像'this'这样的东西(btw在这里实际上并不起作用,因为它返回的信息多于所需的信息).
假设我有一个名为choice它的变量等于2.我如何访问变量的名称?相当于的东西
In [53]: namestr(choice)
Out[53]: 'choice'
Run Code Online (Sandbox Code Playgroud)
用于制作字典.有一个很好的方法来做到这一点,我只是错过了它.
编辑:
因此,这样做的原因.我正在运行一些数据分析的东西,我在程序中调用了多个参数,我想在运行时调整或不调整.我读了我在上一次运行中使用的参数,从.config文件格式化为
filename
no_sig_resonance.dat
mass_peak
700
choice
1,2,3
Run Code Online (Sandbox Code Playgroud)
当提示输入值时,将显示先前使用的值,空字符串输入将使用先前使用的值.
我的问题是因为在写字典时已经扫描了这些值.如果需要一个参数,我运行get_param访问文件并找到参数.
我想我会通过阅读来避免这个问题.config提交一次并从中生成字典.我原本避免了这个......我不再记得的原因.更新我的代码的完美情况!
在Java中,你可以做到instanceof.是否有Ruby等价物?
class C(object):
def f(self):
print self.__dict__
print dir(self)
c = C()
c.f()
Run Code Online (Sandbox Code Playgroud)
输出:
{}
['__class__', '__delattr__','f',....]
Run Code Online (Sandbox Code Playgroud)
为什么自己没有"f".__ dict__
假设o是一个Python对象,我想要所有的字段o,没有任何方法或__stuff__.如何才能做到这一点?
我尝试过这样的事情:
[f for f in dir(o) if not callable(f)]
[f for f in dir(o) if not inspect.ismethod(f)]
Run Code Online (Sandbox Code Playgroud)
但这些返回相同dir(o),大概是因为dir给出了一个字符串列表.此外,__class__即使我让这个工作,这里也会返回.
introspection ×10
python ×5
reflection ×3
android ×1
c# ×1
class ×1
cocoa ×1
dictionary ×1
inheritance ×1
instanceof ×1
java ×1
objective-c ×1
python-2.7 ×1
ruby ×1
stack-trace ×1
variables ×1
xcode ×1