0

我正在尝试学习 python 类,但我什么都不懂。为什么这个简单的例子不返回“6”?它<function TEST.f at 0x00000000029ED378>反而返回。我也试过TEST.f(),但后来他告诉我这个论点self是缺失的。不应该self只存在于类内部,python会自动填充它吗?

#! coding=utf-8

class TEST:
    def __init__(self):
        self.x = 6
    def f(self):
        return(self.x)

print(TEST.f)
4

3 回答 3

11

您需要创建该类的一个实例。

test = TEST()
print test.x()

但是你还需要调用方法和变量不同的东西。

class TEST:
    def __init__(self):
        self._x = 6
    def x(self):
        return(self._x)

否则,您将重新定义x.

于 2013-08-04T18:13:49.487 回答
1

有两种方法可以使您的代码工作:

  1. f正如aychedee 所说,创建一个TEST 实例,并从该实例调用方法:

    >>> TEST().f()
    6
    
  2. 另一种方法是创建一个 TEST 实例 t,并将方法传递给它f

    >>> t = TEST()
    >>> TEST.f(t)
    6
    

    还记得self你方法的论点f吗?基本上,这是将 TEST 实例显式传递t给 method f

于 2013-08-04T18:58:56.197 回答
0

您需要创建一个实例,如图所示。

test = Test()
test.f()
于 2015-03-12T07:11:58.420 回答