理解Python类

时间:2013-08-04 18:11:41

标签: python class

我正在尝试学习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)

3 个答案:

答案 0 :(得分:11)

您需要创建该类的实例。

test = TEST()
print test.x()

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

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

否则您将重新定义x的值。

答案 1 :(得分:1)

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

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

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

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

    还记得方法self的{​​{1}}参数吗?基本上,这是将TEST实例f显式传递给方法t

答案 2 :(得分:0)

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

test = Test()
test.f()