我正在找人解释如何使用的基础知识,而不是使用setattr() 。 我的问题出现了试图使用一个类方法/函数来返回数据,然后把它放在另一个方法/函数。 也许在这种情况下更简单的方法会好得多,但是我想了解类是如何工作/使用的。 这个问题似乎取决于setattr() ,这是我试图做一个相当简单的使用。 虽然这不是完全相同的问题,但是我遵循Python艰难的道路,ex42 – while循环@ 18-41行。 我尝试写一个\__init__() ,并使用getattr()来代替,可能需要在类的名字空间中,但这似乎没有帮助。 #! /bin/python2.6 class HolyGrail(object): def __init__(self): self.start = 'start_at_init' # function definition in question: # TypeError: 'str' object is not callable def run_it(self): start = setattr(self, 'name', 'get_thing') start = self.name # Something wrong here? value_returned = start() #I believe this == self.get_thing() […]
如果我定义一个小Python程序 class a(): def _func(self): return "asdf" # Not sure what to resplace __init__ with so that a.func will return asdf def __init__(self, *args, **kwargs): setattr(self, 'func', classmethod(self._func)) if __name__ == "__main__": a.func 我收到跟踪错误 Traceback (most recent call last): File "setattr_static.py", line 9, in <module> a.func AttributeError: class a has no attribute 'func' 我想弄清楚的是,我怎样才能dynamic地将类方法设置为一个类,而不需要实例化一个对象呢? 编辑: […]
我作为第一个参数“ object ”传递给函数setattr(object, name, value)来设置当前模块上的variables? 例如: setattr(object, "SOME_CONSTANT", 42); 效果如下: SOME_CONSTANT = 42 在包含这些行的模块中(使用正确的object )。 我在模块级dynamic地生成了几个值,因为我不能在模块级定义__getattr__ ,这是我的后备。