- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以解释为什么我在运行下面的 Python 脚本时得到不同的输出吗?
我不明白为什么 getattr(sys.modules['importme'], 'MyClass')
不打印 __repr__()
中定义的自定义函数 MyClass
。
#!/usr/bin/env python
import sys
import importme
def main():
# This line prints "<class 'importme.MyClass'>"
m = getattr(sys.modules['importme'], sys.argv[1])
# This line prints "<MyClass {'text':, 'number':0}>"
#m = importme.MyClass()
print(m)
if __name__ == '__main__':
main()
class MyClass(object):
text = ''
number = 0
def __init__(self, text = '', number = 0):
self.text = text
self.number = number
def __repr__(self):
return "<MyClass {'text':%s, 'number':%d}>" % (self.text, self.number)
最佳答案
在第一种情况下,您获取importme.MyClass
的类对象,您打印的字符串是它的repr
,即类对象的repr
。
在第二种情况下,您创建了一个 MyClass
类型的实例,在这种情况下,打印调用您的自定义 repr
(__repr__
适用于类的实例)。
顺便说一句,因为你第一次import importme
,这个
getattr(sys.modules['importme'], sys.argv[1])
等同于:
getattr(importme, sys.argv[1])
我猜你在第一种情况下的意思是这样的:
m = getattr(importme, sys.argv[1])()
关于python - 为什么 getattr 的行为与手动更新对象不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361885/
Python版本 python -VPython 2.7.9::Anaconda 2.0.1 (x86_64) 如果没有返回或退出,则会出现错误: 第 16 行,正在播放 房间 = getattr(自
使用常规 python,我可以获得 getattr(object, att) 但在 Jinja2 中,我得到: jinja2.exceptions.UndefinedError jinja2.exce
有没有办法获取下面name的变量? def save_info(self): name = 'hello' var1 = 'other item' var2 = 1 .
从python官方文档中,我看到了getattr();的正常表达 getattr(对象,名称[,默认]) 我很明白。例如,我可以这样做: >>> def a(): ... pass ... >
根据我的理解,getattr(object, "method") 等同于 object.method()。如果这是真的,那么使用 getattr 有什么意义? 最佳答案 如果您将属性名称作为字符串,则
因此,在我的代码中使用 getattr 时,我发现了以下内容: myVariable = foo.A.bar 有效...但是像这样: B = "A" myVariable = getattr(foo,
我正在使用一个代码库,其中包含一行我真的无法理解: x, x, z = getattr(ReceiveFile, maxsizes)(input, args) 所以如果最后没有第二个元组,它就是 x,
我一直在深入了解 python 中的 getattr() 函数。从那本书中我知道它与模块一起工作得很好——毫无疑问!我进行了一些测试,但我不知道我将 getattr() 与特定变量一起使用的那段代码有
我有两个类(class)。一个类具有属性 x 但没有 y,另一个类具有属性 y 但没有 x。 我有一个函数接受任一类作为参数。是否有一种单行方法可以将新变量分配给 x 属性(如果存在)或 y 属性(如
我有这个代码; class NumberDescriptor(object): def __get__(self, instance, owner): name = (hasa
我要去 Calling a function of a module from a string with the function's name in Python但是每当我在我的程序中调用我的类时
我有一个简单的用例,我有一个类: class A: def meth1(self, name): ... def meth2(self, name, funcname): #
构造 getattr(obj, 'attr1.attr2', None) 不起作用。替换此结构的最佳做法是什么?将其分成两个 getattr 语句? 最佳答案 您可以使用 operator.attrg
我不知道这是否是 getattr built_in 方法的预期行为。getattr 也会执行默认的(第三个)参数,即使实际参数(第二个)满足条件。示例: def func(): print('
这个问题在这里已经有了答案: Why use setattr() and getattr() built-ins? (5 个答案) 关闭 7 年前。 这段代码有什么区别吗,它使用点符号来访问属性:
我正在尝试使用 Python 的 getattr() 从我无法控制的各种 API 获得的大量对象中提取数据。我的想法是遍历一个异类对象列表,并尝试对它们使用 getattr(),直到我提取出我需要的所
getatter()通过方法名字符串调用方法,这个方法最主要的作用就是实现反射机制,也就是说可以通过字符串获取方法实例,这样就可以把一个类可能要调用的方法放到配置文件里,需要的时候进行动态加载。
编辑:我可能会在这里落入 XY 问题陷阱。这就是我真正想要的 know . 我有以下功能: def foo(): bar = funcToGetBar() return bar.getattr
我正在用 Dojo 1.6 编写一个可以修改属性值的 dojo 函数: function replaceAttributeDojo(obj, attrName, newValue) {
我无法使函数 getattr 工作。这是我的代码: print ConfigConsModel()._meta.get_all_field_names() #['codesectrepmodel',
我是一名优秀的程序员,十分优秀!