python中的self不';t设置私有属性
Python示例,只是想知道self关键字的工作方式与java中的this类似。 需要帮助了解这两个输出 下面是python的示例代码python中的self不';t设置私有属性,python,Python,Python示例,只是想知道self关键字的工作方式与java中的this类似。 需要帮助了解这两个输出 下面是python的示例代码 class A: def __init__(self, a, b): self.__a = a self.__b = b self.__abc = self.__call() def __call(self): print('BEFORE :: ',self.__dict__) self.__abc = self.__
class A:
def __init__(self, a, b):
self.__a = a
self.__b = b
self.__abc = self.__call()
def __call(self):
print('BEFORE :: ',self.__dict__)
self.__abc = self.__a + self.__b
print('AFTER :: ',self.__dict__)
# return self.__a + self.__b
def display(self):
print(self.__abc)
>> a = A('HI', 'Hello')
>> print('INSTANCE :: ',a.__dict__)
>> a.display()
由于
\u call()
方法中没有return语句,因此此方法将返回None
该值保存在构造函数的最后一行:
#self.__call() returns None if the function doesn't has a return statement
def __init__(self, a, b):
self.__a = a
self.__b = b
self.__abc = self.__call()
什么是“不返回”?这与自我或私人属性无关!它完全取决于不返回任何内容的函数的返回值。这是值None。当对return语句进行注释时,在output-1中未设置可能重复的self.\u abc属性值。output-2很好,因为我在return语句之前注释了两行。如果self是当前调用对象,那么它应该保存self的值。为了让事情更清楚,输出-1中的abc:注释掉
return
,\uuu call
返回None
,因此初始值设定项中的赋值将覆盖\uu call
方法中的赋值。
#self.__call() returns None if the function doesn't has a return statement
def __init__(self, a, b):
self.__a = a
self.__b = b
self.__abc = self.__call()