码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象的组合用法

时间:2018-03-06 17:05:38      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:教师   elf   sel   self   用法   hda   def   比较   数据   


类的组合:
一个类中以另一个类的对象作为数据属性
例1.人装备武器
class Weapon:
def prick(self, obj): # 这是该装备的主动技能,扎死对方
obj.life_value -= 500 # 假设攻击力是500

class Person: # 定义一个人类
role = ‘person‘ # 人的角色属性都是人

def __init__(self, name):
self.name = name # 每一个角色都有自己的昵称;
self.weapon = Weapon() # 给角色绑定一个武器;

egg = Person(‘egon‘)
egg.weapon.prick()
#egg组合了一个武器的对象,可以直接egg.weapon来使用组合类中的所有方法
例2.求圆环的面积,周长
class Circle:
def __init__(self,radius):
self.radius = radius

def area(self):
return pi * self.radius * self.radius

def perimeter(self):
return 2 * pi *self.radius

class Ring:
def __init__(self,radius_outside,radius_inside):
self.outsid_circle = Circle(radius_outside)
self.inside_circle = Circle(radius_inside)

def area(self):
return self.outsid_circle.area() - self.inside_circle.area()

def perimeter(self):
return self.outsid_circle.perimeter() + self.inside_circle.perimeter()
用组合的方式建立了类与组合之间 关系,它是一种‘有’的关系,
例:教师有生日
class BirthDate:
def __init__(self,year,month,day):
self.year=year
self.month=month
self.day=day
class Couse:
def __init__(self,name,price,period):
self.name=name
self.price=price
self.period=period
class Teacher:
def __init__(self,name,gender,birth,course):
self.name=name
self.gender=gender
self.birth=birth
self.course=course
def teach(self):
print(‘teaching‘)
当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

面向对象的组合用法

标签:教师   elf   sel   self   用法   hda   def   比较   数据   

原文地址:https://www.cnblogs.com/2018-01-30/p/8514700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!