如何从外部访问类方法中的变量?

时间:2017-09-21 12:59:53

标签: python class variables methods

这里我的代码抛出了AttributeError。如何访问abc变量并将其打印出来?

出于某种原因,我不希望foo班级返回"ABC"。是的,我知道我可以做到,但我正在寻找不同的解决方案。谢谢你的帮助。

class John:   
    def foo(self):
        abc = "ABC"

a = John()
print(a.foo.abc)

2 个答案:

答案 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