我正在尝试学习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)
答案 0 :(得分:11)
您需要创建该类的实例。
test = TEST()
print test.x()
但是你还需要调用方法和变量不同的东西。
class TEST:
def __init__(self):
self._x = 6
def x(self):
return(self._x)
否则您将重新定义x
的值。
答案 1 :(得分:1)
有两种方法可以使您的代码有效:
正如aychedee所说,创建一个TEST实例,并从中调用方法f
实例:
>>> TEST().f()
6
另一种方法是创建一个TEST实例t,然后传递给它
方法f
:
>>> t = TEST()
>>> TEST.f(t)
6
还记得方法self
的{{1}}参数吗?基本上,这是将TEST实例f
显式传递给方法t
。
答案 2 :(得分:0)
您需要创建一个实例,如图所示。
test = Test()
test.f()