python中的self不';t设置私有属性

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.__

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.__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()