【问题标题】:Unbound method error while calling static method调用静态方法时出现未绑定方法错误
【发布时间】:2012-08-08 08:08:05
【问题描述】:

我有一个类,里面有两个方法,一个是静态的,另一个是非静态的:

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)。谁能指出我在这里做错了什么?

【问题讨论】:

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

标签: python function static-methods python-2.4


【解决方案1】:

staticmethod 是一个描述符。描述符仅适用于新型类。

class Person(object):

【讨论】:

  • 是的,但这可能是 Python 3 代码,默认情况下所有类都是新样式的。
  • 我也这样做了,但是我仍然遇到同样的错误!顺便说一句,我使用的是 Python 2.4!
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 2012-02-13
  • 1970-01-01
  • 2012-08-31
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多