【发布时间】:2020-01-26 07:39:00
【问题描述】:
我正在学习 python 类,但无法理解以下行为:
在下面的示例中,我正在扩展内置的str 类:
class uStr(str):
def __init__(self,u_str):
str.__init__(u_str) #<<<------- no self is needed
def underline(self):
underlines = format('', '-^' + str(len(self)))
return str.__str__(self) + '\n' + underlines
在下面的例子中,我正在扩展一个用户定义的类Fraction:
from fraction import *
class MixedFraction(Fraction):
def __init__(self, *args):
Fraction.__init__(self, args[0], args[1]) #<<<-------self is needed
def getWholeNum(self):
return self.getNumerator() // self.getDenominator()
为什么在调用超类的__init__的第二个例子中我们需要给self作为参数,而在调用str的__init__时不需要给self。
【问题讨论】:
-
“不需要自我” - 是的。
__init__调用是错误的。令人困惑的是,您应该省略的参数实际上是u_str。
标签: python class python-object