zoukankan      html  css  js  c++  java
  • 面向对象的组合用法


    类的组合:
    一个类中以另一个类的对象作为数据属性
    例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')
    当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

  • 相关阅读:
    Python Scrapy 自动爬虫注意细节(3)
    Python Scrapy 验证码登录处理
    Python Scrapy 自动爬虫注意细节(2)
    Python Scrapy 自动爬虫注意细节(1)
    Python 爬虫知识点
    Android权限全记录(转)
    Python 爬虫知识点
    eclipse的Maven项目pom.xml错误信息提示missingxxxjar解决方案
    Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
    spark学习系列
  • 原文地址:https://www.cnblogs.com/2018-01-30/p/8514700.html
Copyright © 2011-2022 走看看