Day 01——Task01:变量、运算符与数据类型
Day 02——Task02:条件与循环
Day 03——Task03:列表与元组(上)
Day 04——Task03:列表与元组(下)
Day 05——Task04:字符串与序列
Day 06——Task05:函数与Lambda表达式(上)
Day 07——Task05:函数与Lambda表达式(下)
Day 08——Task06:字典与集合
Day 09——Task07:文件与文件系统(上)
Day 10——Task07:文件与文件系统(下)
Day 11——Task08:异常处理
Day 12——Task09:else 与 with 语句
Day 13——Task10:类与对象(上)
Day 14——Task10:类与对象(下)
Day 15——Task11:魔法方法(上)
Day 16——Task11:魔法方法(下)
Day 17——Task12:模块
补充:子类继承父类构造函数说明
情况一:子类需要自动调用父类的方法
子类不重写 __init__
方法,实例化子类后,会自动调用父类的 __init__
的方法。
class Father(object):
def __init__(self, name):
self.name = name
print ("name: {}".format(self.name))
def getName(self):
return 'Father:' + self.name
class Son(Father):
def getName(self):
return 'Son:' + self.name
if __name__ == '__main__':
son = Son('MiveVax')
print (son.getName())
# name: MiveVax
# Son:MiveVax
情况二:子类不需要自动调用父类的方法
如果子类重写__init__
方法,实例化子类后,将不会自动调用父类的__init__
的方法。
class Father(object):
def __init__(self, name):
self.name = name
print ("name: {}".format(self.name))
def getName(self):
return 'Father:' + self.name
class Son(Father):
def __init__(self, name):
print("hi")
self.name = name
def getName(self):
return 'Son:' + self.name
if __name__ == '__main__':
son=Son('MiveVax')
print (son.getName())
# hi
# Son:MiveVax
情况三:子类重写__init__
方法又需要调用父类的方法
如果重写了__init__
时,要继承父类的构造方法,可以使用 super
关键字:super(子类,self).__init__(参数1,参数2,....)
还有一种经典写法:父类名称.__init__(self,参数1,参数2,...)
class Father(object):
def __init__(self, name):
self.name = name
print ("name: {}".format(self.name))
def getName(self):
return 'Father:' + self.name
class Son(Father):
def __init__(self, name):
super(Son, self).__init__(name)
print("hi")
self.name = name
def getName(self):
return 'Son:' + self.name
if __name__ == '__main__':
son=Son('MiveVax')
print (son.getName())
# name: MiveVax
# hi
# Son:MiveVax
参考资料
- https://www.runoob.com/python3/python3-class.html