马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位带佬,今天学习到python的魔法方法那部分,小甲鱼写的class New_int(int):
def __add__(self, other):
other = other
return int.__sub__(self,other)
def __sub__(self, other):
return int.__add__(self,other)
是没有问题的,但是我把int改成super()之后,pycharm提示我 Unexpected argument
现在一脸懵逼,super()按道理说,不是可以代替所有的父类吗,为什么会报错呢。class New_int(int):
def __add__(self, other):
other = other
return super().__sub__(self,other)
def __sub__(self, other):
return super().__add__(self,other)
各位带佬救命
用 super().__sub__ 和 int().__sub__ 是一样的,因为你的这个类的父类就是 int
这两种方法与 int.__sub__ 的区别就是,后者是用类名调用方法,类名调用方法,就不需要self参数了;前者则不然,是调用的实例方法,需要self参数
可以看看我的这个帖子: python细节之8、类属性(方法)和类实例化属性(方法)
|