程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python中return self用法詳解

編輯:Python

直接上代碼來理解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所示,實現了實例對象的方法進行連續調用


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved