zoukankan      html  css  js  c++  java
  • 《零基础入门学习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





  • 相关阅读:
    最近学习的情况
    0Day – 2011.1.12[From B4A]考试终于完了
    PHP 在NetBeans中的测试[转自NetBeans.org]
    12月武汉下雪了
    Delphi下指针使用总结
    0Day – 2010.12.27[转自B4A]
    AQTime教程
    C #define理解
    C 环境的搭配
    数据结构 字符串的模式匹配
  • 原文地址:https://www.cnblogs.com/iamjuruo/p/7470882.html
Copyright © 2011-2022 走看看