将变量传递给类中的方法

0 投票
4 回答
2021 浏览
提问于 2025-04-16 07:59

我刚开始学习使用类,现在想把一个变量传递给我类里面的一个方法。我该怎么做呢?

下面是我想实现的一个例子:

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成为新式类,而不是旧式类,这在大多数情况下并不重要,但了解一下还是有必要的。

撰写回答