self. | NameError: name 'self' is not defined or NameError: name 'foo' is not defined
self. | NameError: name 'self' is not defined or NameError: name 'foo' is not defined
我经常在 Python 遇到这个面向对象的编程问题,我似乎总是让这两种方法都失败。我在其他语言的 OOP 方面有丰富的经验,但现在才在 Python.
中使用它
我想调用 __init__(self)
中声明的变量。
标准方法是/应该是什么?
调用self.foo
:
class MyClass:
def __init__(self):
self.foo = 'value'
def process():
print(self.foo) # !
test = MyClass()
回溯:
NameError: name 'self' is not defined
正在调用foo
:
class MyClass:
def __init__(self):
self.foo = 'value' # `self.` kept here
def process():
print(foo) # !
test = MyClass()
回溯:
NameError: name 'foo' is not defined
两者都不是 - 你想要:
class MyClass:
def __init__(self):
self.foo = 'value'
def process(self):
print(self.foo) # !
test = MyClass()
test.process()
所有方法都需要 self
作为参数。
您需要在每个方法中传递 self
参数(在 class 中定义时):
class MyClass:
def __init__(self):
self.foo = 'value'
def process():
print(self.foo) # `self` is not defined,
# you need to give it as argument
更正代码:
class MyClass:
def __init__(self):
self.foo = 'value'
def process(self):
print(self.foo)
有人发表评论说:
def process(self)
其中 self.
需要添加到使用任何 self.
var/obj 的 class 方法。
我经常在 Python 遇到这个面向对象的编程问题,我似乎总是让这两种方法都失败。我在其他语言的 OOP 方面有丰富的经验,但现在才在 Python.
中使用它我想调用 __init__(self)
中声明的变量。
标准方法是/应该是什么?
调用self.foo
:
class MyClass:
def __init__(self):
self.foo = 'value'
def process():
print(self.foo) # !
test = MyClass()
回溯:
NameError: name 'self' is not defined
正在调用foo
:
class MyClass:
def __init__(self):
self.foo = 'value' # `self.` kept here
def process():
print(foo) # !
test = MyClass()
回溯:
NameError: name 'foo' is not defined
两者都不是 - 你想要:
class MyClass:
def __init__(self):
self.foo = 'value'
def process(self):
print(self.foo) # !
test = MyClass()
test.process()
所有方法都需要 self
作为参数。
您需要在每个方法中传递 self
参数(在 class 中定义时):
class MyClass:
def __init__(self):
self.foo = 'value'
def process():
print(self.foo) # `self` is not defined,
# you need to give it as argument
更正代码:
class MyClass:
def __init__(self):
self.foo = 'value'
def process(self):
print(self.foo)
有人发表评论说:
def process(self)
其中 self.
需要添加到使用任何 self.
var/obj 的 class 方法。