在构造函数中调用函数时获取NameError

Lea*_*ode 3 python constructor

我通过调用构造函数中的函数运行下面的代码

第一 -

>>> class PrintName:
...    def __init__(self, value):
...      self._value = value
...      printName(self._value)
...    def printName(self, value):
...      for c in value:
...        print c
...
>>> o = PrintName('Chaitanya')
C
h
a
i
t
a
n
y
a
Run Code Online (Sandbox Code Playgroud)

我再次运行这个,我得到了这个

>>> class PrintName:
...    def __init__(self, value):
...      self._value = value
...      printName(self._value)
...    def printName(self, value):
...      for c in value:
...        print c
...
>>> o = PrintName('Hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __init__
NameError: global name 'printName' is not defined
Run Code Online (Sandbox Code Playgroud)

我可以不在构造函数中调用函数吗?并且在执行类似代码时有偏差吗?

注意:我忘了使用self(ex:self.printName())调用类的本地函数.为这篇文章道歉.

Fal*_*rri 11

您需要调用,self.printName因为您的函数是属于PrintName类的方法.

或者,由于您的printname函数不需要依赖于对象状态,因此您可以将其设置为模块级函数.

class PrintName:
    def __init__(self, value):
        self._value = value
        printName(self._value)

def printName(value):
    for c in value:
    print c
Run Code Online (Sandbox Code Playgroud)