python如何使用魔术方法将属性设置为类的方法

时间:2016-12-27 14:26:47

标签: python methods attributes

var ga = 0;
var gaTop = null;
functionTest = function(callback) {
$('html').on("mousewheel DOMMouseScroll", function(e) {
  var delta = (e.originalEvent.wheelDelta || -e.originalEvent.detail);
  if (delta < 0) {
    gaTop = -100;
  } 
  else if (delta > 0) {
    gaTop = 100;
  }
  console.log(gaTop);
  callback(gaTop);

});
}
functionTest(function(e) {
 console.log(gaTop);
}); 

正如你可以看到上面的代码,当我输入print Foo()。think.different时,输出将是&#34;认为不同&#34;。但问题是我应该使用魔法来获得这个,我该怎么办?感谢。

2 个答案:

答案 0 :(得分:0)

在类中定义装饰器似乎是一种不必要的复杂方法:

class Foo(object):

    def think(self):
        pass

    setattr(think, "different", "think different")    



print(Foo().think.different) 

答案 1 :(得分:0)

您可能希望查看调用未定义属性时调用的__getattr__()。或者使用为所有属性调用的__getattribute__() ..当调用required属性时,让它返回方法。这是我认为你需要的东西

class A(object):

    def __init__(self):
        pass

    def printer(self,input):
        print(input)

    def __getattr__(self,atr):
        if atr == 'methd':
            return self.printer

小心使用__getattribute__()如果您使用self.attribute内的__getattribute__()

调用该方法,则可能导致无限循环