|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.想问一下第一段代码为什么不能用第二段代码这样写。
2.问了Ai说第二段代码会报错,但是我在python3.10可以运行,不会报错。
3. str.__new__(cls,word) 这一行代码是什么意思。
- class Uper(str):
- def __new__(cls, word):
- word = word.upper()
- return str.__new__(cls,word)
- a = Uper("hello")
- print('a',a)
- class Up(str):
- def __new__(cls, word):
- return word.upper()
- b = Up("hello")
- print('b',b)
复制代码
1. 第一段代码使用了 str.__new__(cls,word) 来创建一个新的字符串对象并返回,而第二段代码直接返回了一个大写字符串,缺少了实例化过程,因此不能用第二段代码这样写。
2. 在Python 3.10中,第二段代码确实可以运行而不会报错,但这不代表它是正确的写法,因为它缺少了实例化过程,可能会导致一些意外的问题。
3. str.__new__(cls,word) 是一个魔法方法,用于创建一个新的字符串对象。其中, cls 表示当前类, word 表示要创建的字符串。在第一段代码中, Uper 类继承自 str 类,因此调用了 str.__new__(cls,word) 来创建一个新的字符串对象,并将其转换为大写字母后返回。
|
|