君子好逑 发表于 2020-5-10 13:51:36

魔法方法

class Capstr(str):
    def __new__(cls,string):
      string=string.upper()
      return str.__new__(cls,string)
我想知道def__new__方法的cls绑定的是哪个类,def__new__是不是也能看做def__init__

永恒的蓝色梦想 发表于 2020-5-10 14:16:11

cls 是 Capstr 或者是它的子类
不能。你用 __init__() 并不能实现大写字符串的操作。

君子好逑 发表于 2020-5-10 16:08:02

永恒的蓝色梦想 发表于 2020-5-10 14:16
cls 是 Capstr 或者是它的子类
不能。你用 __init__() 并不能实现大写字符串的操作。

那如果我不想用str的new方法返回该怎么写返回值

永恒的蓝色梦想 发表于 2020-5-10 16:11:07

君子好逑 发表于 2020-5-10 16:08
那如果我不想用str的new方法返回该怎么写返回值

你只能用str的new方法返回。

君子好逑 发表于 2020-5-10 16:11:47

永恒的蓝色梦想 发表于 2020-5-10 16:11
你只能用str的new方法返回。

这么难的吗{:10_245:}

永恒的蓝色梦想 发表于 2020-5-10 16:12:59

君子好逑 发表于 2020-5-10 16:11
这么难的吗

如果这个类是Python实现的还行,但str不是Python实现的,所以你只能用str的new方法返回

君子好逑 发表于 2020-5-10 16:22:18

永恒的蓝色梦想 发表于 2020-5-10 16:12
如果这个类是Python实现的还行,但str不是Python实现的,所以你只能用str的new方法返回

好吧,谢谢大佬解惑
页: [1]
查看完整版本: 魔法方法