注:构造函数__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