直接上代碼來理解return self的用法!
示例代碼1:
class Test(object):
def __init__(self):
self.age = 25
def add(self):
self.age += 1
print(self.age)
obj = Test()
obj.add()
運行結果:
有時候當我們想對實例對象的方法進行連續調用時,可能會寫下面的代碼所示:
示例代碼2:
class Test(object):
def __init__(self):
self.age = 25
def add(self):
self.age += 1
print(self.age)
obj = Test()
obj.add().add() # 注意:這種寫法是錯誤的
運行結果:
那麼該如何實現實例對象的方法進行連續調用呢?self其實就是實例對象本身,返回的是一個類實例,那麼return self 就是返回實例對象本身。
示例代碼3:
class Test(object):
def __init__(self):
self.age = 25
def add(self):
self.age += 1
print(self.age)
return self
obj = Test()
obj.add().add()
運行結果:
再看下面示例代碼4至示例代碼6
示例代碼4:
class Test(object):
def __init__(self, name, age):
self.name = name
self.age = age
def set_name(self, name):
self.name = name
def set_age(self, age):
self.age = age
def get_name(self):
return self.name
def get_age(self):
return self.age
obj = Test('張三', 25)
print(obj.get_name())
print(obj.get_age())
運行結果:
示例代碼5: 【當實例對象的方法進行連續調用時報錯了】
class Test(object):
def __init__(self, name, age):
self.name = name
self.age = age
def set_name(self, name):
self.name = name
def set_age(self, age):
self.age = age
def get_name(self):
return self.name
def get_age(self):
return self.age
obj = Test('張三', 25)
print(obj.get_name())
print(obj.get_age())
print(obj.set_age(26).get_age())
運行結果:
示例代碼6: 【在set_name()和set_age()方法中添加了return self】
class Test(object):
def __init__(self, name, age):
self.name = name
self.age = age
def set_name(self, name):
self.name = name
return self
def set_age(self, age):
self.age = age
return self
def get_name(self):
return self.name
def get_age(self):
return self.age
obj = Test('張三', 25)
print(obj.get_name())
print(obj.get_age())
print(obj.set_age(26).get_age())
運行結果:
如示例代碼6所示,實現了實例對象的方法進行連續調用