Tag: getattr

__getattr__用于python中的静态/类variables

我有一个类像: class MyClass: Foo = 1 Bar = 2 每当MyClass.Foo或MyClass.Bar被调用,我需要一个自定义的方法被调用之前返回的值。 在Python中可能吗? 我知道这是可能的,如果我创build一个类的实例,我可以定义我自己的__getattr__方法。 但是我的scneario涉及到使用这个类而不创build任何实例。 另外我需要调用str(MyClass.Foo)时调用自定义的__str__方法。 Python是否提供这样的选项?

如何使用__getattribute__方法?

我想覆盖对一个类中的一个variables的访问,但通常返回所有其他的variables。 我如何用__getattribute__完成这个工作? 我试过以下(这也应该说明我在做什么),但我得到一个recursion错误: class D(object): def __init__(self): self.test=20 self.test2=21 def __getattribute__(self,name): if name=='test': return 0. else: return self.__dict__[name] >>> print D().test 0.0 >>> print D().test2 … RuntimeError: maximum recursion depth exceeded in cmp

__getattr__在模块上

如何在一个模块上实现相当于__getattr__的类? 例 当调用模块的静态定义的属性中不存在的函数时,我希望在该模块中创build一个类的实例,并在模块上的属性查找中调用其名称与失败相同的方法。 class A(object): def salutation(self, accusative): print "hello", accusative # note this function is intentionally on the module, and not the class above def __getattr__(mod, name): return getattr(A(), name) if __name__ == "__main__": # i hope here to have my __getattr__ function above invoked, since # salutation does not exist in the current […]

如何在当前模块上调用setattr()?

我作为第一个参数“ object ”传递给函数setattr(object, name, value)来设置当前模块上的variables? 例如: setattr(object, "SOME_CONSTANT", 42); 效果如下: SOME_CONSTANT = 42 在包含这些行的模块中(使用正确的object )。 我在模块级dynamic地生成了几个值,因为我不能在模块级定义__getattr__ ,这是我的后备。

了解__getattr__和__getattribute__之间的区别

我想了解__getattr__和__getattribute__之间的区别,但是,我失败了。 堆栈溢出问题getattr与getattribute之间的区别说, 在查看对象上的实际属性之前调用__getattribute__ ,因此可能会很难正确实现。 你可以很容易地在无限的recursion结束。 我完全不知道这意味着什么。 然后它继续说: 你几乎肯定希望__getattr__ 。 为什么? 我读过,如果__getattribute__失败, __getattr__被调用。 那么为什么有两种不同的方法做同样的事情呢? 如果我的代码实现了新的风格类,我应该使用什么? 我正在寻找一些代码示例来清除这个问题。 我已经尽力search到了,但是我find的答案并没有彻底讨论这个问题。 如果有任何文件,我准备阅读。

如何在不违反默认行为的情况下覆盖Python中的__getattr__?

我想覆盖类的__getattr__方法来做一些奇特的事情,但我不想打破默认行为。 什么是正确的方法来做到这一点?

getattr()究竟是什么,我该如何使用它?

我正在阅读有关getattr()函数 。 问题是我还是不能把握它的用法。 我对getattr()理解是, getattr(li, "pop")和调用li.pop是一样的。 我不明白什么时候这本书提到你如何使用它来获得一个函数的引用,直到运行时才知道它的名字。 总的来说,也许这就是我在编程方面的一个小菜鸟。 任何人都可以谈一谈这个问题? 何时以及如何使用这个?

__getattr__与__getattribute__之间的区别

我想了解何时使用__getattr__或__getattribute__ 。 文档中提到__getattribute__适用于新风格的类。 什么是新式课程?