Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印在类方法中不可见-python_Python - Fatal编程技术网

打印在类方法中不可见-python

打印在类方法中不可见-python,python,Python,我在实例化的类中调用一个方法来打印“Hello World”。构造函数在控制台中打印其消息,但不打印另一个方法。我是Python新手,有人能解释为什么吗 class Zapper: def __init__(self, name): print "My name is " + name Zapper.zap def zap(): print "Hello World!" zing = Zapper('Frank') zing.zap Python需要在方法

我在实例化的类中调用一个方法来打印“Hello World”。构造函数在控制台中打印其消息,但不打印另一个方法。我是Python新手,有人能解释为什么吗

class Zapper:

  def __init__(self, name):
    print "My name is " + name
    Zapper.zap

  def zap():
    print "Hello World!"

zing = Zapper('Frank')
zing.zap

Python需要在方法周围加括号才能调用它们。如果不包含它们,只需返回绑定方法对象(在某些情况下很有用)。你想要的是:

zing.zap()

您可以在上找到Python类的详细介绍

基本上,您希望
zap
成为一个实例方法,并始终在类的实例上调用它

下面是经过更正和扩展的示例:

class Zapper:
  def __init__(self, name):
    print "My name is " + name
    self.name = name
    self.zap()

  def zap(self):
    print "Hello World, my name is still " + self.name

zing = Zapper('Frank')
zing.zap()
请注意,我们将
name
的值存储在名为
self.name
的实例变量中。若要稍后访问此变量,需要对实例进行引用。这就是为什么
zap
self
作为其第一个参数。现在我们也可以在
zap
方法中使用
self.name

在内部,点表示法转换如下:

self.zap() => Zapper.zap(self)
zing.zap() => Zapper.zap(zing)
您忘记了
Zapper.zap
末尾的
()