这里我的代码抛出了AttributeError。如何访问abc
变量并将其打印出来?
出于某种原因,我不希望foo
班级返回"ABC"
。是的,我知道我可以做到,但我正在寻找不同的解决方案。谢谢你的帮助。
class John:
def foo(self):
abc = "ABC"
a = John()
print(a.foo.abc)
答案 0 :(得分:1)
您必须将类John
中的变量定义为类的属性。像这样:
class John:
def __init__(self): # You have to have this initialization method, which is called when you do 'John()'
self.foo()
def foo(self):
self.abc = "ABC" # Note the use of 'self.'
a = John()
print(a.abc) # abc is an attribute of 'John', no need to pass through 'foo'
修改强>
创建类__init__()
的实例时, a = John()
会执行。在__init__()
内,你可以做任何你在课堂上的功能。您可以在现场创建属性(在属性名称前使用self.
)或调用函数或类方法(在这种情况下,我们称为foo
mehtod, with self。)。因此,在这一行:
a = John()
您正在创建类John
的实例,将其分配给a
,并执行执行John.__init__()
的{{1}},这会创建属性John.foo()
}。
答案 1 :(得分:0)
您正在寻找__init__
功能。
class John:
def __init__(self):
self.abc = "ABC"
a = John()
print(a.abc)
只要您创建该类的新实例,就会调用 init 函数。因此,只要John-class获得一个新实例(" a"),它就有变量" abs"附在它上面。
在您的课程中,您可以使用abc
来处理self.abc
变量,从外部用您的实例名称替换self
。