2012-08-08 68 views
0

我有两种方法在里面,一个静态的,另一个没有静态类:不受约束的方法错误而调用静态方法

class Person(object): 
    def getDetails(self): 
     Person.change_something(self.name) 

    @staticmethod 
    def change_something(name): 
     return name.upper() 

当我创建一个类Person的一个实例,并调用person.getDetails(),我得到错误,说unbound method change_something() must be called with Person instance as first argument (got str instance instead)。任何人都可以指出我在这里做错了什么?

+1

你使用Python 2或3吗? – BrenBarn 2012-08-08 08:13:20

+1

这不是一个完整的,可测试的例子(冒号缺失)。请发布您的真实代码,但尝试将其简化为再现问题的最简单形式(例如:self.name可以替换为:“test”)。我们需要一个我们可以复制粘贴的代码,包括对象创建和调用,一切。 – 2012-08-08 08:24:36

回答

3

staticmethod是描述符。描述符只适用于新式类。

class Person(object): 
+0

确实如此,但这可能是Python 3代码,默认情况下所有类都是新建的。 – BrenBarn 2012-08-08 08:14:09

+1

@BrenBarn:如果它是Python 3代码,那么它会工作。 – 2012-08-08 08:14:33

+0

我也这样做了,但是,我仍然得到相同的错误!顺便说一句,我使用Python 2.4! – 2012-08-08 08:16:38