本文实例讲述了Python面向对象类继承和组合。分享给大家供大家参考,具体如下:
在python3中所有类默认继承object,凡是继承了object的类都成为新式类,以及该子类的子类Python3中所有的类都是新式类,没有集成object类的子类成为经典类(在Python2中没有集成object的类以及它的子类都是经典类
继承式用来创建新的类的一种方式,好处是减少重复代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class People:
def __init__( self ,name,age):
self .name = name
self .age = age
def walking( self ):
print ( '%s is walking ' % self .name)
def talking( self ):
print ( '%s is talking ' % self .name)
class Teacher(People):
pass
class Student(People):
pass
t1 = Teacher( 'egon' , 18 )
print (t1.name,t1.age)
t1.walking()
t1.talking()
s1 = Student( 'xiaobai' , 22 )
print (s1.name,s1.age)
s1.talking()
s1.walking()
|
执行结果
egon 18
egon is walking
egon is talking
xiaobai 22
xiaobai is talking
xiaobai is walking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
class People:
def __init__( self ,name,age,sex):
self .name = name
self .age = age
self .sex = sex
def walking( self ):
print ( '%s is walking ' % self .name)
def talking( self ):
print ( '%s is talking ' % self .name)
class Teacher(People):
def __init__( self ,name,age,sex,level,salary):
People.__init__(name,age,sex)
self .level = level
self .salary = salary
def teaching( self ):
People.talking( self )
print ( '%s is teaching' % self .name)
class Student(People):
def __init__( self ,name,age,sex,group):
People.__init__(name,age,sex)
self .group = group
def studying( self ):
People.talking( self )
print ( '%s is studying' % self .name)
|
组合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
class Date:
def __init__( self ,year,mon,day):
self .year = year
self .mon = mon
self .day = day
def tell_birth( self ):
print ( '出生于<%s>年 <%s>月 <%s>日' % ( self .year, self .mon, self .day))
class Teacher:
def __init__( self ,name,age,sex,year,month,day):
self .name = name
self .age = age
self .sex = sex
self .birth = Date(year,month,day)
def teaching( self ):
print ( '%s is teaching' % self .name)
class Student:
def __init__( self ,name,age,sex,year,mon,day):
self .name = name
self .age = age
self .sex = sex
self .birth = Date(year,mon,day)
def studying( self ):
print ( '%s is studying' % self .name)
xiaobai = Student( 'xiaobai' , 22 , 'male' , '1995' , '3' , '16' )
xiaobai.birth.tell_birth()
|
执行结果
出生于<1995>年 <3>月 <16>日
继承和组合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
class People:
def __init__( self ,name,age,sex,year,mon,day):
self .name = name
self .age = age
self .sex = sex
self .birth = Date(year,mon,day)
def walking( self ):
print ( '%s is walking ' % self .name)
def talking( self ):
print ( '%s is talking ' % self .name)
class Date:
def __init__( self ,year,mon,day):
self .year = year
self .mon = mon
self .day = day
def tell_birth( self ):
print ( '出生于<%s>年 <%s>月 <%s>日' % ( self .year, self .mon, self .day))
class Teacher(People):
def __init__( self ,name,age,sex,level,salary,year,mon,day):
People.__init__( self ,name,age,sex,year,mon,day)
self .level = level
self .salary = salary
def teaching( self ):
People.talking( self )
print ( '%s is teaching' % self .name)
class Student(People):
def __init__( self ,name,age,sex,year,mon,day,group):
People.__init__( self ,name,age,sex,year,mon,day)
self .group = group
def studying( self ):
People.talking( self )
print ( '%s is studying' % self .name)
|
父类要限制
1、子类必须有父类的方法
2、子类实现的方法必须跟父类的方法的名字一样
1
2
3
4
5
6
7
8
|
import abc
class File (metaclass = abc.ABCMeta):
@abc .abstractclassmethod
def read( self ):
pass
@abc .abstractclassmethod
def write( self ):
pass
|
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://www.cnblogs.com/c491873412/p/7112668.html