__new__方法详解
class CapStr(str):def __new__(cls,string):
string = string.upper()
return str.__new__(cls,string)
>>> a = CapStr('I love Fishc.com!')
>>> 以甲鱼这这代码举例,这里的return 语句没有看,什么意思,求解困惑好几天了 qin_yin 发表于 2020-10-30 21:25
不理解,str.__new__的这里的参数,如果我传入两个参数,给str.__New__那么就会报错,
Traceback (most...
str.__new__方法的参数与str()函数的参数类似
第一个参数是类,在这里也就是CapStr类
第二个参数是待转换的字符串(或别的什么)
例如:str.__new__(cls, 12)可理解为str(12) 先把字符串大写,然后调用str的__new__,即调用父类的new 冬雪雪冬 发表于 2020-10-29 21:27
先把字符串大写,然后调用str的__new__,即调用父类的new
为什么会把string参数返回,而不返回其他的,说个题外的字符串属于实例对象吗例如('string') 你输入help(str):
|Static methods defined here:
|
|__new__(*args, **kwargs) from builtins.type
| Create and return a new object.See help(type) for accurate signature.
==============是实例对象==============
>>> type('string')
<class 'str'> 就是先将字符串大写,然后调用父类str的__new__方法构造一个对象
str的__new__方法返回一个实例对象,所以这里也返回一个实例对象 lhgzbxhz 发表于 2020-10-30 18:31
就是先将字符串大写,然后调用父类str的__new__方法构造一个对象
str的__new__方法返回一个实例对象,所以 ...
不理解,str.__new__的这里的参数,如果我传入两个参数,给str.__New__那么就会报错,
Traceback (most recent call last):
File "<pyshell#206>", line 1, in <module>
a = CapStr('ad','ad')
File "<pyshell#203>", line 5, in __new__
return str.__new__(cls,string,b)
TypeError: decoding str is not supported
页:
[1]