shiyouroc 发表于 2022-7-13 18:05:19

python 类 报错

以下三段代码 ,只有一段报错。
class A(str):
    def __new__(ls,string):
      string = string.upper()
      return str.__new__(ls,string)


a = A('l love FishC.com!')
print(a)

class A(str):
    def __new__(sss,string):
      string = string.upper()
      return str.__new__(sss,string)


a = A('l love FishC.com!')
print(a)

class A(str):
    def __new__(ls,string):
      string = string.upper()
      return str.__new__(cls,string)


a = A('l love FishC.com!')
print(a)
最后一段代码,报错如下NameError: name 'cls' is not defined

青出于蓝 发表于 2022-7-13 18:08:53

本帖最后由 青出于蓝 于 2022-7-13 18:10 编辑

第4行,哪来的cls
class A(str):
    def __new__(ls,string):
      string = string.upper()
      return str.__new__(ls,string)


a = A('l love FishC.com!')
print(a)

python爱好者. 发表于 2022-7-13 18:14:46

class A(str):
    def __new__(ls,string): #这里你在定义时形参的名字为 "ls",所以后面需使用 "ls" 作为变量名,并不存在 "ls" 这个变量!
      string = string.upper()
      return str.__new__(cls,string) #应该为 "ls"


a = A('l love FishC.com!')
print(a)

shiyouroc 发表于 2022-7-13 18:57:27

python爱好者. 发表于 2022-7-13 18:14


这在小甲鱼那一颗讲的,我回去复习一下。

shiyouroc 发表于 2022-7-13 18:59:18

python爱好者. 发表于 2022-7-13 18:14


还有是不是每一个类的形参是不一样的

python爱好者. 发表于 2022-7-13 20:13:45

shiyouroc 发表于 2022-7-13 18:59
还有是不是每一个类的形参是不一样的

这里的形参是指你在定义类中的方法,也就是函数时,在括号里填的参数,如:
def __new__(ls,string):
这里的 ls,string 就是形参,具体的你可以翻小甲鱼前面的关于函数的课堂笔记
页: [1]
查看完整版本: python 类 报错