将变量传递给类中的方法
我刚开始学习使用类,现在想把一个变量传递给我类里面的一个方法。我该怎么做呢?
下面是我想实现的一个例子:
class a_class():
def a_method(txt):
print txt
instance = a_class()
instance.a_method('hello world!)
另外,我还不太明白 self
和 __blah__
这些概念,如果不需要用到的话,我会尽量避免它们。
4 个回答
2
在Python中,实例方法必须在方法的定义中把实例(用self表示)作为第一个参数。
class a_class():
def a_method(self,txt):
print txt
这应该就是你想要的。此外,如果你想要操作一个成员变量,你可以这样做:
class a_class():
name = "example"
def a_method(self,txt):
print txt
print self.name
4
你需要有
class a_class():
def a_method(self,txt):
print txt
在一个类的方法里,第一个变量总是指向这个对象,不管你用什么名字来命名这个变量。(除非你把它当作静态方法来用)。
5
在Python中为一个类写实例方法时,你总是需要使用self
。实例方法的第一个参数总是调用这个方法的对象。self
并不是Python中的保留字,只是约定俗成的第一个参数名称。
引用一下官方Python教程第9章中的内容:
[...] 方法的特别之处在于,调用方法时,对象会作为函数的第一个参数传入。在我们的例子中,调用x.f()和MyClass.f(x)是完全等价的。一般来说,调用一个带有n个参数的方法,相当于调用一个对应的函数,只不过在第一个参数前面插入了方法的对象。
因此,你需要为你的方法定义两个参数。第一个参数总是self
,至少这是传统的名称,第二个参数就是你实际需要的参数。所以你的代码片段应该是:
class a_class(object):
def a_method(self, txt):
print txt
instance = a_class()
instance.a_method('hello world!')
注意,这个类是明确继承自object的(我不太确定空括号是否合法)。你也可以选择不继承,这在大多数情况下是一样的,但在类型系统的一些细节行为上会有所不同;从object
继承使得a_class成为新式类,而不是旧式类,这在大多数情况下并不重要,但了解一下还是有必要的。