45----类的组合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_first/article/details/81676779

组合

  • 一个类和另一个类组合在一起
  • 指的是在一个类中,用另一个类的对象作为该类的属性
  • 是一种包括的关系

作用

  • 减少重复代码
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 talk(self):
        print("talking")

class Dog:
    def __init__(self, name, year, mon, day):
        self.name = name
        self.birth = Date(year, mon, day)
    def talk(self):
        print("旺旺")

class Date:
    def __init__(self ,year ,mon ,day):
        self.year = year
        self.mon = mon
        self.day = day
    def get_birth(self):
        print("生日:%s年-%s月-%s日" %(self.year, self.mon, self.day))


r = People("bone", 26, "男", 1990, 12, 30)
print(r.name, r.age)  # bone26
print(r.birth.year)  # r.birth是Date的对象  1990
r.birth.get_birth()  # 生日:1990年-12月-30日

d = Dog("旺财", 1989,12,23)
print(d.name)       # 旺财
print(d.birth.day)      # 23
d.birth.get_birth()     # 生日:1989年-12月-23日

加入继承,再次简化

class Animal:
    def __init__(self, name, year, mon, day):
        self.name = name
        self.birth = Date(year, mon, day)

    def eat(self):
        print("eating")

class  People(Animal):
    def __init__(self ,name ,age ,sex ,year ,mon ,day):
        Animal.__init__(self, name, year, mon, day)
        self.age = age
        self.sex = sex
    def talk(self):
        print("talking")

class Dog(Animal):
    def __init__(self, name, year, mon, day):
        Animal.__init__(self, name, year, mon, day)

    def talk(self):
        print("旺旺")

class Date:
    def __init__(self ,year ,mon ,day):
        self.year = year
        self.mon = mon
        self.day = day
    def get_birth(self):
        print("生日:%s年-%s月-%s日" %(self.year, self.mon, self.day))


r = People("bone", 26, "男", 1990, 12, 30)
print(r.name, r.age)  # bone26
print(r.birth.year)  # r.birth是Date的对象  1990
r.birth.get_birth()  # 生日:1990年-12月-30日

d = Dog("旺财", 1989,12,23)
print(d.name)       # 旺财
print(d.birth.day)      # 23
d.birth.get_birth()     # 生日:1989年-12月-23日

猜你喜欢

转载自blog.csdn.net/c_first/article/details/81676779
今日推荐