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()
output-1 :
When return is commented
BEFORE :: {'_A__a': 'HI', '_A__b': 'Hello'}
AFTER :: {'_A__a': 'HI', '_A__b': 'Hello', '_A__abc': 'HIHello'}
INSTANCE :: {'_A__a': 'HI', '_A__b': 'Hello', '_A__abc': None}
None
output-2 :
When return not is commented, two line before return is commented
BEFORE :: {'_A__a': 'HI', '_A__b': 'Hello'}
INSTANCE :: {'_A__a': 'HI', '_A__b': 'Hello', '_A__abc': 'HIHello'}
HIHello
答案 0 :(得分:1)
由于__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()