|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
请问下边这个代码,不需要在__init__里添加一个参数就可以直接实例化对象的时候写成a=Nstr('i love fishc.com!')的吗?
因为这里继承了 str 类,所以 str 类能用的,Nstr 现在可以用
因为 str 父类已经帮你定义好了,所以只要你不重写,就可以直接使用 str 的功能了,除非你重写__init__ 和 __new__ 时候需要加上参数的定义
|
|