#类
#类的创建 :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的大小关系了。(个人见解)