-3

我正在学习python3,我想知道我怎么能

class testit:
    def assigna():
        a = "Hi"

    def geta(self):
        print(self.a)


test = testit
print(test.geta())

如何geta按照我尝试使用的评论中的建议访问内部,self.a它给了我一个错误。

这是我的更新代码

class testit:
    def assigna(self):
        self.a = "Hi"

    def geta(self):
        print(self.a)


test = testit
print(test.geta())

这是错误。

Traceback (most recent call last):
  File "test.py", line 44, in <module>
    print(test.geta())
TypeError: geta() missing 1 required positional argument: 'self'

4

2 回答 2

2

当您传入self方法的参数时,它引用一个对象,因此您必须先分配a为对象属性。

您还必须像这样调用它来创建此类的实例classname()

class TestIt:
    def assigna(self):
        self.a = "Hi"

    def geta(self):
        return self.a


test = TestIt()
test.assigna()
test.geta()
print(test.geta())
于 2020-05-30T14:35:46.823 回答
1

您可以通过访问基于实例的变量,self但您必须在构造函数中分配给它,这是给您的一些代码:

class Test:
  def __init__(self):
      self.a = ""
  def assign_a(self):
      self.a = "Hi"
  def get_a(self):
     print(self.a)

所以你可以像这样访问它:

test = Test()
test.assign_a()
test.get_a()

这里仔细看一下这个__init__函数,它被称为构造函数,在里面我们a通过. 声明变量self。现在这个变量将可以在整个班级中访问。

学习愉快!!

于 2020-05-30T14:40:23.013 回答