国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python面向对象编程之组合关系

Python面向对象编程之组合关系

头像

爱喝马黛茶的安东尼

2019-07-02 13:56:553552浏览 · 0收藏 · 0评论

python面向对象编程之组合

前面讲了面向类与对象的继承,知道了继承是一种什么“是”什么的关系。然而类与类之间还有另一种关系,这就是组合。

先来看两个例子:

先定义两个类,一个老师类,老师类有名字,年龄,出生的年,月和日,所教的课程等特征以及走路,教书的技能。

class Teacher:
    def __init__(self,name,age,year,mon,day):
        self.name=name
        self.age=age
        self.year=year
        self.mon=mon
        self.day=day
    def walk(self):
        print("%s is walking slowly"%self.name)
    def teach(self):
        print("%s is teaching"%self.name)

再定义一个学生类,学生类有名字,年龄,出生的年,月和日,学习的组名等特征以及走路,学习的技能。

class Student:
    def __init__(self,name,age,year,mon,day):
        self.name=name
        self.age=age
        self.year=year
        self.mon=mon
        self.day=day
    def walk(self):
        print("%s is walking slowly"%self.name)
    def study(self):
        print("%s is studying"%self.name)

根据类的继承这个特性,可以把代码缩减一下。

定义一个人类,然后再让老师类和学生类继承人类的特征和技能:

class People:
    def __init__(self,name,age,year,mon,day):
        self.name=name
        self.age=age
        self.year=year
        self.mon=mon
        self.day=day
    def walk(self):
        print("%s is walking"%self.name)
class Teacher(People):
    def __init__(self,name,age,year,mon,day,course):
        People.__init__(self,name,age,year,mon,day)
        self.course=course
    def teach(self):
        print("%s is teaching"%self.name)
class Student(People):
    def __init__(self,name,age,year,mon,day,group):
        People.__init__(self,name,age,year,mon,day)
        self.group=group
    def study(self):
        print("%s is studying"%self.name)

再对老师和学生进行实例化,得到一个老师和一个学生。

t1=Teacher("alex",28,1989,9,2,"python")
s1=Student("jack",22,1995,2,8,"group2")

现在想知道t1和s1的名字,年龄,出生的年,月,日都很容易,但是想一次性打印出t1或s1的生日就不那么容易了,这时就需要用字符串进行拼接了,有没有什么更好的办法呢??

相关推荐:《Python视频教程

那就是组合。

继承是一个子类是一个父类的关系,而组合则是一个类有另一个类的关系。可以说每个人都有生日,而不能说人是生日,这样就要使用组合的功能 。可以把出生的年月和日另外再定义一个日期的类,然后用老师或者是学生与这个日期的类组合起来,就可以很容易得出老师t1或者学生s1的生日了,再也不用字符串拼接那么麻烦了。

来看下面的代码:

class Date:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def birth_info(self):
        print("The birth is %s-%s-%s"%(self.year,self.mon,self.day))
class People:
    def __init__(self,name,age,year,mon,day):
        self.name=name
        self.age=age
        self.birth=Date(year,mon,day)
    def walk(self):
        print("%s is walking"%self.name)
class Teacher(People):
    def __init__(self,name,age,year,mon,day,course):
        People.__init__(self,name,age,year,mon,day)
        self.course=course
    def teach(self):
        print("%s is teaching"%self.name)
class Student(People):
    def __init__(self,name,age,year,mon,day,group):
        People.__init__(self,name,age,year,mon,day)
        self.group=group
    def study(self):
        print("%s is studying"%self.name)
t1=Teacher("alex",28,1989,9,2,"python")
s1=Student("jack",22,1995,2,8,"group2")

这样一来,可以使用跟前面一样的方法来调用老师t1或学生s1的姓名,年龄等特征以及走路,教书或者学习的技能。

print(t1.name)
t1.walk()
t1.teach()

输出为:

alex    
alex is walking
alex is teaching

那要怎么能够知道他们的生日呢:

print(t1.birth)

输出为:

<__main__.Date object at 0x0000000002969550>

这个birth是子类Teacher从父类People继承过来的,而父类People的birth又是与Date这个类组合在一起的,所以,这个birth是一个对象。而在Date类下面有一个birth_info的技能,这样就可以通过调用Date下面的birth_info这个函数属性来知道老师t1的生日了。

t1.birth.birth_info()

得到的结果为:

The birth is 1989-9-2

同样的,想知道实例学生s1的生日也用同样的方法:

s1.birth.birth_info()

得到的结果为:

The birth is 1995-2-8

组合就是一个类中使用到另一个类,从而把几个类拼到一起。组合的功能也是为了减少重复代码。

相关推荐:

Python之初识对象的继承

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

黄金网站9.1免费入口| 日韩毛片| 《法国空乘9》| 怡情阵| 金装律师第二季| 公交车上把腿张开让人摸| 双男主GAI免费观看网站| 电影《轮番上阵》| 乳头夹夹太紧好疼怎么缓解 | 午马影视免费观看电视剧| 一线产区和二线产区的标准图 | 妈妈和女儿齐上阵的播出时间| 摸摸大扔子的视频大全| 美国禁忌| 《喂奶人妻厨房HD》| 告白小说免费阅读| 我在开会他在下添好爽 | 如何正确拔萝卜| 十八岁免费观看全集高清| 儿媳妇免费播放全部电视剧| 《医务室上垒》动漫全集在线观看| C2000论坛| 床3之他和她的关系| 午马影视免费观看电视剧| 闺蜜老公把我压在怀里| 大姨妈来了同房内射吃避孕药 | 韩国咬住奶头的乳三级| 巜生殖按摩1995伦理| 中字HD人妻の亂倫2| 伦理《少妇的滋味》完整版| 外国网站| H动漫片| 欧美大片免费PPT| 《课后2对1特别授课》女主角是.. | 妈妈你真棒插曲快来救救我电影| 《一滴都不许漏》何泽城林荫 | 千金归来在线观看| 日本大片又大又好看的PPT| 韩漫免费观看下拉式漫画软件测评 | 二叶草M码与欧洲码的区别| 慢脚APP官方版