类与类之间的关系
2018-11-09 02:42:01来源:博客园 阅读 ()
一、依赖关系
- 在方法中给方法传递一个对象
- 此种关系,类与类之间的关系是最轻的
# 植物大战僵尸 class Plant(object): """ 植物类 """ def __init__(self, name, attack, hp): """ 初始化 :param name:植物名 :param attack: 攻击力 :param hp: 血量 """ self.name = name self.attack = attack self.hp = hp def fight(self, zombie): """ 攻击js,使js掉血 :param js: 攻击对象 :return: None """ zombie.hp -= self.attack class Zombie(object): """ 僵尸类 """ def __init__(self, name, hp, attack): """ 初始化 :param name: 僵尸名 :param hp: 血量 :param attack: 攻击力 """ self.name = name self.hp = hp self.attack = attack def eat(self, plant): """ 僵尸吃plant :param plant: 吃的对象 :return: None """ plant.hp -= self.attack lvluo = Plant("绿萝", 20, 100) js1 = Zombie("僵尸1号", 100, 5) lvluo.fight(js1) js1.eat(lvluo) print(lvluo.hp) # 95 print(js1.hp) # 80
二、关联关系
- 两种事物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的
- 一对多:一的一方埋集合,多的一方埋实体
1) 一对一关系
class Person(object): """ Person类 """ def __init__(self, name, id=None): """ 初始化 :param name: 姓名 :param id: 身份证号码 """ self.name = name self.id = id def display(self): """ 展示有无身份证 :return: None """ if self.id: print("我叫%s, 我的身份证号码为%s" % (self.name, self.id)) else: print("我未成年,没有身份证!!!") class Id(object): """ Id类 """ def __init__(self, name, num): """ 初始化 :param name: 姓名 :param num: 身份证号 """ self.name = name self.num = num p_id = Id("Tom", 123456789) p1 = Person("Tom", p_id.num) p1.display() # 我叫Tom, 我的身份证号码为123456789
2) 一对多关系
class Teacher(object): """ Teacher类 """ def __init__(self, name, lst=None): """ 初始化 :param name: 姓名 :param lst: 学生列表 """ self.name = name if lst == None: self.lst = [] else: self.lst = lst def add(self, student): """ 添加学生 :param student: 学生对象 :return: None """ self.lst.append(student) def display(self): """ 打印学生姓名 :return: None """ for el in self.lst: print(el.name) class Student(object): """ Student类 """ def __init__(self, name, num): """ 初始化 :param name: 姓名 :param num: 学号 """ self.name = name self.num = num # 创建对象 t = Teacher("Tom") s1 = Student("andy", 1) s2 = Student("Linda", 2) # 把学生添加给老师 t.add(s1) t.add(s2) t.display() 结果: andy Linda
三、继承关系
- 在具体继承关系中,访问方法时,self永远都是指向创建对象时的对象。
class Base(object): def __init__(self, num): self.num = num def func1(self): print(self.num) class Foo(Base): pass obj = Foo(123) # 调用__init__方法,自己没有,找父类 obj.func1() # 123
Next:
class Base(object): def __init__(self, num): self.num = num def func1(self): print(self.num) self.func2() def func2(self): print("Base.func2") class Foo(Base): def func2(self): print("Foo.func2") obj = Foo(123) obj.func1() 结果: 123 Foo.func2
Next:
class Base(object): def __init__(self, num): self.num = num def func1(self): print(self.num) self.func2() def func2(self): print(111, self.num) class Foo(Base): def func2(self): print(222, self.num) lst = [Base(1), Base(2), Foo(3)] for obj in lst: obj.func1() 结果: 1 111 1 2 111 2 3 222 3
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:模块(包、库)
- 进程相关 2019-08-13
- python使用ORM之如何调用多对多关系 2019-07-24
- ORM 2019-07-24
- python的比较关系运算符和逻辑运算符 2019-07-24
- 优酷项目之 ORM(数据库对象关系映射)代码重写 2019-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash