【问题标题】:Python newbie having a problem using classesPython新手在使用类时遇到问题
【发布时间】:2013-02-17 17:16:50
【问题描述】:

我刚刚开始在课堂上搞砸了;但是,我遇到了一个问题。

class MyClass(object):
    def f(self):
        return 'hello world'
print MyClass.f

之前的脚本返回 <unbound method MyClass.f> 而不是预期的值。我该如何解决这个问题?

【问题讨论】:

  • 你在读什么教程?你在哪里看到过这样的代码?
  • 我正在阅读一本教科书,但是,它对代码非常模糊,并且没有提供一个简单的示例。所以我只是摆弄着,试图让一些事情发挥作用。

标签: python class


【解决方案1】:

MyClass.f 指的是函数对象 f,它是 MyClass 的一个属性。在您的情况下, f 是一个实例方法(具有 self 参数),因此它在特定实例上调用。它是“未绑定的”,因为您指的是 f 而不指定特定的类,有点像指的是没有汽车的方向盘。

你可以创建一个 MyClass 的实例并从中调用 f ,如下所示:

x = MyClass()
x.f()

(这指定从哪个实例调用 f,因此您可以引用实例变量等。)

您将 f 用作static method。这些方法不绑定到特定的类,只能引用它们的参数。

会像这样创建和使用静态方法:

class MyClass(object):
    def f():                 #no self parameter
        return 'hello world'
print MyClass.f()

【讨论】:

    【解决方案2】:

    创建你的类的一个实例:m = MyClass()

    然后使用m.f()调用函数

    现在您可能想知道为什么不必将参数传递给函数(“self”参数)。这是因为你调用函数的实例实际上是作为第一个参数传递的。

    MyClass.f(m)等于m.f(),其中mMyClass类的实例对象。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2013-06-24
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2012-01-07
      相关资源
      最近更新 更多