鱼C论坛

 找回密码
 立即注册
查看: 1629|回复: 2

[已解决]a=Nstr('i love fishc.com!'),传入一个参数,__init__里不需要添加一个参数吗

[复制链接]
发表于 2020-8-23 16:31:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问下边这个代码,不需要在__init__里添加一个参数就可以直接实例化对象的时候写成a=Nstr('i love fishc.com!')的吗?我理解的是这里实例化对象传入一个字符串参数,__init__里在self后边也应该添加一个参数吧。

class Nstr(str):
    def __lshift__(self,other):
        return self[other:]+self[:other]

    def __rshift__(self,other):
        return self[-other:]+self[:-other]


比如下边这个实例化过程
>>> a=Nstr('FishC')
>>> b=Nstr('FishC')
>>> a+b
代码就在__init__里定义了arg=''来接收传入的字符串

class Nstr(str):
    def  __init__(self,arg=''):
        if isinstance(arg,str):
            self.total=0
            for i in arg:
                self.total+=ord(i)
        else:
            print('参数错误')

    def __add__(self,other):
        return self.total+other.total
最佳答案
2020-8-23 16:34:27
请问下边这个代码,不需要在__init__里添加一个参数就可以直接实例化对象的时候写成a=Nstr('i love fishc.com!')的吗?


因为这里继承了 str 类,所以 str 类能用的,Nstr 现在可以用

因为 str 父类已经帮你定义好了,所以只要你不重写,就可以直接使用 str 的功能了,除非你重写__init__ 和 __new__ 时候需要加上参数的定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-23 16:34:27 | 显示全部楼层    本楼为最佳答案   
请问下边这个代码,不需要在__init__里添加一个参数就可以直接实例化对象的时候写成a=Nstr('i love fishc.com!')的吗?


因为这里继承了 str 类,所以 str 类能用的,Nstr 现在可以用

因为 str 父类已经帮你定义好了,所以只要你不重写,就可以直接使用 str 的功能了,除非你重写__init__ 和 __new__ 时候需要加上参数的定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-23 16:43:19 | 显示全部楼层
Twilight6 发表于 2020-8-23 16:34
因为这里继承了 str 类,所以 str 类能用的,Nstr 现在可以用

因为 str 父类已经帮你定义好了,所以 ...

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 07:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表