Python——oop03

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这个写法,但是由于我没有他的优点在哪里,我就只是提出来这个概念,不做概述



猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/80317602