class Man1():
def __init__(self, name):
self.name = name
With this definition, both the instance variable name can be referenced and rewritten.
#Initialization
Paul = Man("Paul")
#Can be referenced
print(Paul.name)
#Rewritable
Paul.name = Mac
But some instance variables
In some cases. in this case,
#Prefix the instagram variable__Defined in(This__name is mangled and this name cannot be referenced)
class Man():
def __init__(self, name):
self.__name = name
#This function name should not overlap with an existing instance variable name
@property
def name(self):
return self.__name
#Need to define getter with the same name before setter
#Without this setter the name property would be read-only
@name.setter
def name(self, name):
self.__name = name
By
#Initialization
Paul = Man("Paul")
#reference
# Paul.name()is not
print(Paul.name)
#Rewrite
# Paul.name("Mac")is not
Paul.name = "Mac"
#No direct access to the original property(error)
Paul.__name
Paul.__name = "Mac"
However, it is possible to refer to and rewrite the instance variable __name
with Paul._Man__name
(so mock
).