您的位置:首页 > 编程语言 > Python开发

python 面向对象——继承与多态

2014-09-25 16:56 495 查看
Python是面向对象的编程语言,面向对象的基本单元是类

类的声明:

1 class class_name():
pass


测试如下:

In [1]: class c():
...:     pass
...:

In [2]: a=c()

In [3]: a
Out[3]: <__main__.c instance at 0x07500A30>


类的继承:

In [4]: class base():
...:     def f(self):
...:         print 'base'
...:

In [5]: class sub(base):
...:     pass
...:

In [6]: x=sub()

In [7]: x.f
Out[7]: <bound method sub.f of <__main__.sub instance at 0x074FD7D8>>

In [8]: x.f()
base


成员变量,在初始化函数__init__中对成员变量赋值即可,__init__函数相当于C++及Java中的构造函数

例如:

In [9]: class c():
...:     def __init__(self,name,age):
...:         self._name=name
...:         self._age=age
...:     def printinfo(self):
...:         print self._name,self._age
...:

In [10]: x=c('P','10')

In [11]: x.printinfo()
P 10


实例属性

class d():
def __init__(self):
self._name='a'
self._age=10
def printinfo(self):
print self._name,self._age

#==============================================================================
#   第一种方式
#==============================================================================
def get_name(self):
return self._name

def set_name(self,value):
self._name=value

name=property(fget=get_name,fset=set_name)

#==============================================================================
#   第一种方式
#==============================================================================
@property
def age(self):
return self._age

@age.setter
def age(self,value):
self._age=value


测试如下:

In [16]: x=d()

In [17]: x.printinfo()
a 10

In [18]: x.name
Out[18]: 'a'

In [19]: x.age
Out[19]: 10

In [20]: x.name='b'

In [21]: x.name
Out[21]: 'b'

In [22]: x.age=9

In [23]: x.age
Out[23]: 9


虚函数性质,同名覆盖

class e():
def f(self):
print 'base'

class f(e):
def f(self):
print 'son'

class g(e):
pass

class h():
def f(self,e):
e.f()

a=e()
a.f()
b=f()
b.f()
c=g()
c.f()
x=h()
x.f(a)
x.f(b)
x.f(c)


测试结果

base
son
base
base
son
base
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: