《零基础入门学习Python》学习过程笔记【38类的继承】


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




	


但这样就OK
>>> 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()方法 

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





原文地址:https://www.cnblogs.com/iamjuruo/p/7470882.html