【问题标题】:How to access a classes attribute variable in other method [duplicate]如何在其他方法中访问类属性变量[重复]
【发布时间】:2020-09-18 01:44:52
【问题描述】:

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

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

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


test = testit
print(test.geta())

如何按照 cmets 中的建议访问 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'

【问题讨论】:

  • 您的意思是:self.a = "Hi"
  • 您还需要创建testit 类的实例调用 其方法test.assigna(),并添加一个参数(通过约定称为self) 到assigna
  • 当我尝试这样做时,它给了我一个错误 TypeError: geta() missing 1 required positional argument: 'self' now here is how my code looking loke
  • 请使用完整的错误回溯更新您的问题。

标签: python python-3.x class python-class


【解决方案1】:

当您在方法的参数中传递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())

【讨论】:

    【解决方案2】:

    您可以通过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__函数,它被称为构造函数,在里面我们声明变量aself。现在这个变量将可以在整个类中访问。

    享受学习!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多