您当前的位置: 首页 >  Python

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python中return self用法详解

IT之一小佬 发布时间:2022-08-02 23:04:22 ,浏览量:0

直接上代码来理解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所示,实现了实例对象的方法进行连续调用

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0465s