Python 3.x 如何访问类中子函数的变量?
我在子函数外部调用变量时遇到问题:Python 3.x 如何访问类中子函数的变量?,python-3.x,python-3.7,Python 3.x,Python 3.7,我在子函数外部调用变量时遇到问题: class ABC(): def ___init___(self): function_A() function_B() def function_A(self): self.A = 5 def subfunction_of_A(self): self.B = 2 self.function_B() subfuncti
class ABC():
def ___init___(self):
function_A()
function_B()
def function_A(self):
self.A = 5
def subfunction_of_A(self):
self.B = 2
self.function_B()
subfunction_of_A()
def function_B(self):
C = self.B
Start = ABC()
我总是犯错误:
'ABC'对象没有C=self.B的属性“B”
我怎样才能从外面进入self.B
非常感谢:)
-------编辑/更新----------
好的,我想我可能需要更新一下我的问题:
class ABC():
def ___init___(self):
self.function_A()
self.function_B()
def function_A(self):
self.A = 5
def subfunction_of_A(self):
self.B = 2
subfunction_of_A(self)
print(self.B) # This prints 2 and works as it should!
def function_B(self):
C = self.B # In this line I receive the error that ABC.B does not exist --> Why is that?
Start = ABC()
编辑:
class ABC():
定义初始化(自):
self.function_A()
self.function_B()
def功能_A(自身):
self.A=5
def子功能_of_A(自身):
self.B=2
_A的子功能_(self)
def功能(自身):
打印(self.B)#此功能打印2个,并正常工作!
C=自我。B
Start=ABC()
这一次您的问题似乎是您的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>有3个下划线,而不是2个<代码>\uuuu初始化\uuuuu
先前的答复:
你永远不会调用你的“子函数”
设置B的唯一方法是让该函数运行,即使它是嵌套的…这是一种奇怪的设置类的方法,但您可以编辑:
class ABC():
定义初始化(自):
self.function_A()
self.function_B()
def功能_A(自身):
self.A=5
def子功能_of_A(自身):
self.B=2
_A的子功能_(self)
def功能(自身):
打印(self.B)#此功能打印2个,并正常工作!
C=自我。B
Start=ABC()
这一次您的问题似乎是您的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>有3个下划线,而不是2个<代码>\uuuu初始化\uuuuu
先前的答复:
你永远不会调用你的“子函数”
设置B的唯一方法是让该函数运行,即使它是嵌套的…这是一种奇怪的设置类的方法,但现在你可以开始了我猜你是指实例属性?如中所示,如果您为ABC
类创建一个新的实例,例如,像这样ABC=ABC()
您无法访问属性?我对Python非常陌生,但我认为问题在于您没有在类的顶层声明属性a或B,然后就拥有了您的函数和子函数(我必须承认,子函数的想法对我来说也很奇怪)修改这些属性。@mapf:是的,这就是问题的一部分。我想你是在引用实例属性?比如,如果你为ABC
类创建一个新的instance
,比如这样的ABC=ABC()
您无法访问属性?我对Python非常陌生,但我认为问题在于,您没有在类的顶层声明属性A或B,然后才有您的函数和子函数(我必须承认,子函数的概念对我来说也很奇怪)修改这些属性。@mapf:是的,这是一个问题。谢谢。我刚刚编辑了我的问题。实际上我调用了函数本身的“子函数”。这些函数是从类的init调用的。你有什么线索吗?你必须将self传递给“子函数”为了使其影响当前对象,请注意我如何将其称为_A(self)的子函数
我再次编辑了我的问题-我仍然不明白为什么我不能访问它?!我编辑了你当前代码的答案…如果它仍然不起作用,你显然没有发布你的实际代码,我无法告诉你它有什么问题谢谢。我刚刚编辑了我的问题。实际上我调用了“子函数”在函数本身中。函数是从类的init调用的。你有什么线索吗?你必须将self传递给“sub function”,它才能影响当前对象-注意我如何将其称为A(self)的subfunction
我再次编辑了我的问题-我仍然不明白为什么我不能访问它?!我编辑了你当前代码的答案…如果它仍然不起作用,你显然没有发布你的实际代码,我无法告诉你它出了什么问题
class ABC():
def function_A(self):
self.A = 5
def subfunction_of_A(self):
self.B = 2
subfunction_of_A(self) # notice this line
def function_B(self):
self.C = self.B
abc = ABC()
abc.function_A()
abc.function_B()
print(abc.C) # prints 2