How can you explain the output of the following program?
To me, it looks like, MyClass
is maintaining two copies of __my_variable
in later stages. Then, why is __init__()
able to display "Hello World!"
?
To my understanding __init__()
should print a blank. Right?
class MyClass:
__my_variable: str = "Hello World!"
def __init__(self):
print(self.__my_variable)
self.__my_variable = "Constructor World!"
@classmethod
def cls_modify(cls):
cls.__my_variable = "Class World!"
@classmethod
def cls_display(cls):
print(cls.__my_variable)
def inst_modify(self):
self.__my_variable = "Instance World!"
def inst_display(self):
print(self.__my_variable)
if __name__ == '__main__':
my_obj = MyClass()
my_obj.cls_display()
my_obj.inst_display()
my_obj.cls_modify()
my_obj.cls_display()
my_obj.inst_display()
my_obj.inst_modify()
my_obj.cls_display()
my_obj.inst_display()
Output
C:\Users\pc\AppData\Local\Microsoft\WindowsApps\python3.7.exe C:/Users/pc/source/classmethod__test.py
Hello World!
Hello World!
Constructor World!
Class World!
Constructor World!
Class World!
Instance World!
Process finished with exit code 0