直接上代码来理解return self的用法!
示例代码1:
class Test(object):def __init__(self):self.age = 25def add(self):self.age += 1print(self.age)obj = Test()
obj.add()
运行结果:
有时候当我们想对实例对象的方法进行连续调用时,可能会写下面的代码所示:
示例代码2:
class Test(object):def __init__(self):self.age = 25def add(self):self.age += 1print(self.age)obj = Test()
obj.add().add() # 注意:这种写法是错误的
运行结果:
那么该如何实现实例对象的方法进行连续调用呢?self其实就是实例对象本身,返回的是一个类实例,那么return self 就是返回实例对象本身。
示例代码3:
class Test(object):def __init__(self):self.age = 25def add(self):self.age += 1print(self.age)return selfobj = Test()
ret = obj.add().add().age
print(ret)
运行结果:
再看下面示例代码4至示例代码6
示例代码4:
class Test(object):def __init__(self, name, age):self.name = nameself.age = agedef set_name(self, name):self.name = namedef set_age(self, age):self.age = agedef get_name(self):return self.namedef get_age(self):return self.ageobj = Test('张三', 25)
print(obj.get_name())
print(obj.get_age())
运行结果:
示例代码5: 【当实例对象的方法进行连续调用时报错了】
class Test(object):def __init__(self, name, age):self.name = nameself.age = agedef set_name(self, name):self.name = namedef set_age(self, age):self.age = agedef get_name(self):return self.namedef get_age(self):return self.ageobj = 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 = nameself.age = agedef set_name(self, name):self.name = namereturn selfdef set_age(self, age):self.age = agereturn selfdef get_name(self):return self.namedef get_age(self):return self.ageobj = Test('张三', 25)
print(obj.get_name())
print(obj.get_age())print(obj.set_age(26).get_age())
运行结果:
如示例代码6所示,实现了实例对象的方法进行连续调用