【发布时间】:2018-06-08 09:09:22
【问题描述】:
有一些关于自我的问题,但我无法在任何地方找到一个很好且易于理解的解释为什么我不能这样做以及我应该如何正确地做到这一点。这种处理方式对我和许多其他开始使用 python 的人来说是非常违反直觉的。示例:
class cls:
def __init__(self):
self.a = True
if self.a:
print("self.a is True")
else:
print("self.a if False")
我不知道如何在类的 init 之外访问或检查“a”。如果我会做这样的事情:
class cls:
def __init__(self):
self.a = True
if a:
print("a is True")
else:
print("a if False")
然后我得到 NameError。在某些时候,我总是遇到这个问题,我不明白如何正确处理这个问题。我应该在课外用函数做这个吗?在这种情况下,无论您尝试什么都应该有意义。另一个例子:
class cls:
def __init__(self):
self.a = True
if cls.a:
print("self.a is True")
else:
print("self.a if False")
给出 IndentationError:意外缩进。
【问题讨论】:
-
您在网站上看到的缩进(尤其是第 5-8 行)是否与您在编辑器中看到的一样?
-
您拥有的
if语句属于另一个函数!你不能让它挂在一个方法之外,因为你已经把它放在了一个类中。 -
在方法之外,您只是在类定义中 - 当您还没有完成定义要实例化的类时,不可能有实例
self!您实际上期望在这里发生什么? -
您希望何时执行此 if 语句?
标签: python python-3.x python-2.7 class self