【发布时间】:2020-12-21 10:58:41
【问题描述】:
例如:
class MyClass:
def __init__(self,Attr1):
self.Attr1 = Attr1
def method1(self):
self.var1 = [some codes involves Attr1]
def method2(self):
self.var2 = [some codes involves var1 from method1]
可行吗?但是函数中的变量是函数的局部变量。我不知道我是否可以从method1 拨打var1。
我能想到的另一种方法是在__init__ 中设置self.var1,所以它是一个类属性,因此我可以在method2 中调用它。但是我不想有一个很大的__init__。
我还阅读了一些关于类属性和实例属性的内容——这两者有什么区别?
【问题讨论】:
-
按照您目前的编写方式,self.var1 是类的本地文件,而不是method1 的本地文件。它也可以从 method2 调用。但是,您需要先调用 method1 才能对其进行初始化。最好直接在init下做这个
-
“可行吗?” - 你有没有尝试过?请提供完整的工作代码(即用真实(可能是玩具或示例)代码替换“一些代码”
-
self指的是实例。如果对象被实例化,您绝对可以使用您在method1其他地方设置的实例属性。
标签: python oop self class-attributes