Python自学笔记(九)

#
#类的创建 :class类名 + 冒号,后面语句要缩进
#类的属性创建:通过赋值语句(即定义“是怎样的”)
#实例方法的创建:def + 方法名(self)
#方法具体的执行过程,即定义“能做什么”
class Computer():
    #初始化的方法命名 双下划线+init+双下划线 ,实例化对象时,直接调用方法
    def __init__(self):
        print('初始化')
    screen = True
    def start(self):
        print("电脑开机")

#类的调用
c = Computer()
print(c.screen)
#True
c.start()
#电脑开机

class A():
    def __init__(self,name):
        self.name=name
    def Day(self):
        print('今天是{}生日'.format(self.name))
    def B(self):
        print('今天是{}'.format(self.day))

a=A('张三')
a.Day()
a.day = '星期三'
#定义a.day属性
print(a.day)
a.B()
#类的继承,让子类拥有父类的所有的方法和属性(遗传),继承后可以定制自己的方法和属性(变异)
class A():
    name = "张三"
#class 子类名(父类名)
class B(A):
    name1 = '王五'
    def __init__(self):
        print(self.name)
a = A()
b = B()
print(b.name)
#张三
#张三
class C(B):
    name = '张三丰'
    name1 = '李四'
c = C()
#张三丰
#B继承了A,C又继承了B,C更改了B的name属性,但是又有B的初始化方法,所以打印了张三丰
#上面说明了,子类不光可以新增属性,还可以重写父类的属性

#多重继承(拓扑算法,就近原则),这一点比单继承的java好。
class D(C,A):
    pass
d = D()
print(d.name1)
#如果上面的继承顺序变成D(A,C)会报错,按照拓扑算法排序,目前的排序为D,C,B,A,O,A,O;这样系统就会认为是D<C<B<A<O;
#如果变成了D(A,C),排序变成了D,A,O,C,B,A,O;系统就分不清B与A,O的大小关系了。(个人见解)

 

posted @ 2019-11-18 16:15  半瓶假酒  阅读(132)  评论(1编辑  收藏  举报