python继承构造函数 python继承写法( 三 )


print("man")
elif self.sex == "female":
print("woman")
class Child(Person):
pass
class Baby(Child):
pass
May = Baby("May","female")# 继承上上层父类的属性
print(May.name,May.sex)
May.print_title()# 可使用上上层父类的方法
class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
class Baby(Child):
pass
May = Baby("May","female")
May.print_title()# 优先使用上层类的方法
如何解决python2不能隐式继承继承是所有开发语言的必修内容python继承构造函数,而本文写的只是Python继承中的特殊之处,关于继承概念及内容可以自行百度(不装B,感觉百度挺好的)1.构造函数:
要说继承,先要说一下构造函数 。Java要求是与类名相同并且无返回值,而Python则是强制要求命名为“__init__()” 。
当创建类的对象时 , 会自动先调用构造函数,一般用于初始化 。构造函数可以不写,那么程序会隐式自动增加一个空的构造函数 。
2.继承写法:
(1).class 空格 类名称 括号内填写父类名 冒号具体写法如下class A:
def __init__(self):
pass
def print_class_name(self):
print "this is class A"
class B(A):
def __init__(self):
pass
if __name__ == "__main__":
class_b = B()
class_b.print_class_name()
上面代码首先定义了一个名为“A”的类,包含一个名为“print_class_name”的方法 。然后,定义一个名为“B”的类,继承“A”,同时继承了“A”类的“print_class_name”的方法 。
此时“A”类为“B”类的父类或者叫基类,“B”类是“A”类的子类,子类会继承父类的所有公共方法 。
(2).意义:
一字记之曰“懒!”(感叹号不算字)我始终相信赖人才能推动科学进步 。
言归正传,假如python继承构造函数你要写一个老王类,包含年龄、性别等方法,后面还要写一个老王的儿子小王类 , 也有年龄、性别等方法?
class FatherWang:
def __init__(self, age=43, sex='man'):
self.a = age
self.s = sex
def age(self):
print self.a
def sex(self):
print self.s
class SonWang:
def __init__(self, age=13, sex='man'):
self.a = age
self.s = sex
def age(self):
print self.a
def sex(self):
print self.s
if __name__ == "__main__":
father = FatherWang(43, "man")
father.age()
father.sex()
son = SonWang(13, "man")
son.age()
son.sex()
你会发现两个类中有相同名称和功能的方法,这样写岂不是很重复很累?(尽管按键盘次数不算太多 , 我依然觉得很累)如果有继承就很好解决了 。
class FatherWang:
def __init__(self, age=43, sex='man'):
self.a = age
self.s = sex
def age(self):
print self.a
def sex(self):
print self.s
class SonWang(FatherWang):
def __init__(self, age=13, sex='man'):
FatherWang.__init(age, sex)
if __name__ == "__main__":
father = FatherWang(43, "man")
father.age()
father.sex()
son = SonWang(13, "man")
son.age()
son.sex()
两者运行结果完全一样,但是使用继承方法却省了很多按键盘的次数 。
3.经典类与新式类:
(1)经典类写法:
class A:
pass
(2)新式类写法:
class A(object):
pass
可以看出,新式类和经典类的区别在于,是否继承object这个基类 。object是所有类的父类 。所以之前不带“(object)”的写法,属于经典类写法,加上“(object)”就是新式类的写法 。
(3).原因:这里我得吐槽一下Python的版本混乱 。2.2版本之前只有经典类写法,这里有一个问题,代码如下?

推荐阅读