如何在其他方法中访问类属性变量[重复]
Posted
技术标签:
【中文标题】如何在其他方法中访问类属性变量[重复]【英文标题】: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
请使用完整的错误回溯更新您的问题。
@ForThis 阅读Tutorial - 9.3.5. Class and Instance Variables
【参考方案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__
函数,它被称为构造函数,在里面我们声明变量a
到self
。现在这个变量将可以在整个类中访问。
享受学习!!
【讨论】:
以上是关于如何在其他方法中访问类属性变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章