首页 > 代码库 > python 面向对象——继承与多态
python 面向对象——继承与多态
Python是面向对象的编程语言,面向对象的基本单元是类
类的声明:
1 class class_name():2 pass
测试如下:
In [1]: class c(): ...: pass ...: In [2]: a=c()In [3]: aOut[3]: <__main__.c instance at 0x07500A30>
类的继承:
1 In [4]: class base(): 2 ...: def f(self): 3 ...: print ‘base‘ 4 ...: 5 6 In [5]: class sub(base): 7 ...: pass 8 ...: 9 10 In [6]: x=sub()11 12 In [7]: x.f13 Out[7]: <bound method sub.f of <__main__.sub instance at 0x074FD7D8>>14 15 In [8]: x.f()16 base
成员变量,在初始化函数__init__中对成员变量赋值即可,__init__函数相当于C++及Java中的构造函数
例如:
1 In [9]: class c(): 2 ...: def __init__(self,name,age): 3 ...: self._name=name 4 ...: self._age=age 5 ...: def printinfo(self): 6 ...: print self._name,self._age 7 ...: 8 9 In [10]: x=c(‘P‘,‘10‘)10 11 In [11]: x.printinfo()12 P 10
实例属性
1 class d(): 2 def __init__(self): 3 self._name=‘a‘ 4 self._age=10 5 def printinfo(self): 6 print self._name,self._age 7 8 #============================================================================== 9 # 第一种方式10 #==============================================================================11 def get_name(self):12 return self._name13 14 def set_name(self,value):15 self._name=value16 17 name=property(fget=get_name,fset=set_name)18 19 #==============================================================================20 # 第一种方式21 #==============================================================================22 @property23 def age(self):24 return self._age25 26 @age.setter27 def age(self,value):28 self._age=value29 30
测试如下:
1 In [16]: x=d() 2 3 In [17]: x.printinfo() 4 a 10 5 6 In [18]: x.name 7 Out[18]: ‘a‘ 8 9 In [19]: x.age10 Out[19]: 1011 12 In [20]: x.name=‘b‘13 14 In [21]: x.name15 Out[21]: ‘b‘16 17 In [22]: x.age=918 19 In [23]: x.age20 Out[23]: 9
虚函数性质,同名覆盖
1 class e(): 2 def f(self): 3 print ‘base‘ 4 5 class f(e): 6 def f(self): 7 print ‘son‘ 8 9 class g(e):10 pass11 12 class h():13 def f(self,e):14 e.f()15 16 a=e()17 a.f()18 b=f()19 b.f()20 c=g()21 c.f()22 x=h()23 x.f(a)24 x.f(b)25 x.f(c)
测试结果
1 base2 son3 base4 base5 son6 base
python 面向对象——继承与多态
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。