組合

1、組合

1.1什麼是組合

對象的某個屬性是另一個類的對象,就是一個類的對象具有某一個屬性,該屬性的值是指向另一個類的對象app

1.1.1組合的概念

class Foo:
    def __init__(self,bar):
        self.bar = bar
class Bar:
    pass
bar = Bar()
f = Foo(bar)

1.1 爲何使用組合

能夠減小代碼的冗餘函數

class Person:
    school = 'oldbody'
class Teacher(Person):
    def __init__(self,name,age,level,course):
        self.name = name
        self.age = age
        self.level = level
        #course是課程對象,表示老師教授的課程
        self.course = course
class Student(Person):
    def __init__(self,name,age,course):
        self.name = name
        self.age = age
        #course是課程對象,表示學生選的課程
        self.course = course
class Course:
    def __init__(self,course_name,course_price,course_period):
        self.name = course_name
        self.price = course_price
        self.period = course_period

course = Course('python',20189,7)
stu = Student('chen',19,course)
teacher = Teacher('chen',19,'高級',course)
print(teacher.course.name)

1.2如何使用

class Person:
    school = 'oldbody'
class Teacher(Person):
    def __init__(self,name,age,level,course):
        self.name = name
        self.age = age
        self.level = level
        self.course = course
class Stundent(Person):
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.course_list = []
    def choose_course(self,course):
        #把課程對象追加到學生選課的列表中
        self.course_list.append(course)
    def tell_all_course(self):
        #循環學生選課列表,每次拿出一個課程對象
        for course in self.course_list:
            print(course.name)
class Course:
    def __init__(self,course_name,cour_price,cour_peroid):
        self.name = course_name
        self.price = cour_price
        self.period = cour_peroid

course = Course('python',201999,7)
stu1 = Stundent('nick',18)
stu1.choose_course(course)
stu2 = Stundent('chen',19)
stu2.choose_course(course)
stu2.choose_course(Course('linx',19999,5))

# 查看stu1選擇的全部課程名稱
#方式一(經過普通函數)
def tell_all_course(student):
    for course in student.course_list:
        print(course.name)
tell_all_course(stu1)

#

python
#方式二(經過對象的綁定方法)
stu2.tell_all_course()

#

python
linx

組合能夠理解成多我的去造一個機器人,有的人造頭、有的人造腳、有的人造手、有的人造軀幹,你們都完工後,造軀幹的人把頭、腳、手拼接到本身的軀幹上,所以一個機器人便造出來了code

相關文章
相關標籤/搜索