版权声明:本文为博主原创文章,未经博主允许不得转载。 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日