1.多重继承采用的是系统给出的c3算法里算出来的继承顺序,自己可以输出mro表,下面我给出三个多重继承的例子,自行理解
1. class animal(): def eat(self): pass class gaojianimal(): def sleep(self): print("我是高级动物的睡觉") class bird(animal,gaojianimal): pass class fish(gaojianimal): def sleep(self): print("我是鱼的睡觉") class superman(bird,fish): pass t=superman() t.sleep() print(superman.__mro__)
2. class animal(): def eat(self): pass class gaojianimal(): def sleep(self): print("我是高级动物的睡觉") class bird(animal,gaojianimal): pass class fish(): def sleep(self): print("我是鱼的睡觉") class superman(bird,fish): pass t=superman() t.sleep() print(superman.__mro__)
3. class perosn(): pass class Stuident(perosn): pass class Teacher(perosn): pass class Tudor(Stuident,Teacher): pass print(Tudor.mro()) print(Tudor.__mro__)#这两个好像功能是不是一样的
这第三个例子是没有错的,然后如果大家还要继续了解多重继承的话,给出一篇我看到的博客——http://www.cnblogs.com/whatisfantasy/p/6046991.html
2.调用父类并重写构造函数
class fun(): def __init__(self,name): print("我是{}".format(name)) class fun1(fun): def __init__(self,name): super().__init__(name)#这样调用就好了,当然还可以使用父类名进行调用 print("我是子类") name="罗建义" a=fun1(name)
3.相关函数
# 4 类相关函数 # # - issubclass:检测一个类是否是另一个类的子类 # # - isinstance:检测一个对象是否是一个类的实例 # # - hasattr:检测一个对象是否由成员xxx # class fun(): # age=12 # def sleep(self): # self.name=None # # a=fun() # print(hasattr(a,"sleep")) # print(hasattr(a,"name")) # print(hasattr(a,'age')) # print(hasattr(fun,'age')) # #以下几种就自己需要用到的时候再去了解 # # - getattr: get attribute # # - setattr: set attribute # # - delattr: delete attribute # # - dir: 获取对象的成员列表
3.类名其实有书写规范的,不要学我 类名书写规范
类的名字应该规范书写 所有单词首字母大写 直接连接起来不要下划线 eg:MyName
4.告诉大家有Mixin这个写法,但是由于我没有他的优点在哪里,我就只是提出来这个概念,不做概述