注:构造函数__init__(self)不能有返回值
1.如何继承类A?只需在定义类时,在类名后面添加括号,括号内写上A
即class B(A):
2.子类继承父类的什么?一个子类可以继承它父类的任何属性与方法
注意!!!!!!!!!!!!子类会继承父类的构造函数!!!!!!!!!!!!!!!!!
>>> class A: def __init__(self): self.a=1 self.b=1 def f(self): print(self.a) print(self.b) >>> class B(A): pass
>>> b.f() #类B继承了类A的构造函数,否则根本没有a,b,以至于根本无法输出... 1 1
>>> class A: a=1 def f(self): print("正在调用A类中的方法f") >>> class B(A): b=1 >>> b=B() >>> b.a 1 >>> b.f() 正在调用A类中的方法f
3.如果子类中定义了与父类同名的属性或方法,则父类中属性或方法会被覆盖(和C++相同)
>>> class C: a=1 def f(self): print("正在调用父类中的f方法") >>> class D(C): a=2 def f(self): print("正在调用子类中的f方法") >>> hh=D() >>> hh.a 2 >>> hh.f() 正在调用子类中的f方法
4.pass?
就是什么也不做,用来占位的...
例如
>>> def a():这个函数的定义不会随着你按下两次回车结束..它会不断打印出空行
但是这样就OK
>>> def a(): pass >>>
但是写上pass就不会报错
定义类也是同样的情况
>>> class A:
>>> class A: pass >>>
5.as?
当引入一个类库时,可以给类库起个别名
>>> import random as r >>> r.randint(1,10) 10
6.如何在子类的构造函数中引入父类的构造函数?
方法一:在子类的构造函数中添加 父类名.__init__(self)
>>> class A: def __init__(self): self.x=1 self.y=1 >>> class B(A): def __init__(self): #这里的self指的是子类的实例对象 A.__init__(self) self.z=1 >>> b=B() >>> b.x 1 >>> b.y 1 >>> b.z 1
super()方法会自动帮我们找到父类的名字,自动传入self参数
>>> class B(A): def __init__(self): super().__init__() self.z=1 >>> b1=B() >>> b1.x 1 >>> b1.y 1 >>> b1.z 1
7.多重继承?
可以同时继承多个类的属性和方法。例如同时继承B,C,D: class A(B,C,D):
>>> class A: def f1(self): print("我是A") >>> class B: def f2(self): print("我是B") >>> class C: def f3(self): print("我是C") >>> class D(A,B,C): pass >>> d=D() >>> d.f1() 我是A >>> d.f2() 我是B >>> d.f3() 我是C
8.如何去掉父类中的某个函数?同名pass覆盖(不知道明显提出来有什么必要,竟然鱼C说了,我也就记一下)
>>> class A: def f(self): print("A") >>> class B(A): def f(self): pass