When I execute the below code, the first time name value is printed it prints the correct name i.e "John".
But when I create second empty instance, it still prints the name "John". Expected output should be, it will print only "Empty name" since friend_2 uses a new empty instance.
class User:
def __init__(self,name ="Empty name"):
self.__name = name
def get_name(self):
return self.__name
def set_name(self,word):
self.__name = word
class Friend:
def __init__(self,user = User()):
self.__user = user
def get_user(self):
return self.__user.get_name()
def set_n(self,name):
self.__user.set_name(name)
friend_1 = Friend()
# Only friendd_1 instance is being set to name John
friend_1.set_n("John")
name_1 = friend_1.get_user() # expected as we set John to friend_1 instance
friend_2 = Friend() # use new User empty instance
name_2 = friend_2.get_user() # This value is also John, but it should print "Empty value" as we are using default argument.