直接上代码来理解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()
ret = obj.add().add().age
print(ret)
运行结果:
再看下面示例代码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所示,实现了实例对象的方法进行连续调用