zoukankan      html  css  js  c++  java
  • python之路--类与类之间的关系

    类和类之间的关系

      在我们的世界中事物和事物之间总会有一些联系.
      在面向对象中. 类和类之间也可以产生相关的关系
      1. 依赖关系
        执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.
        随时可以更换另外一个东西来完成此操作

    class Person:
        def play(self, tools): # 通过参数的传递把另外一个类的对象传递进来
            tools.run()
            print("很开心, 我能玩儿游戏了")
    class Computer:
        def run(self):
            print("电脑开机. 可以运行")
    class Phone:
        def run(self):
            print("手机开机, 可以运行")
    c = Computer()
    phone = Phone()
    p = Person()
    p.play(phone)

      

    # 写一个植物大战僵尸
    # 1. 植物
    #       打僵尸. 僵尸掉血
    # 2. 僵尸
    #       吃植物. 植物掉血
    class Plant:
        def __init__(self, name, hp, ad): # 200
            self.name = name
            self.hp = hp
            self.ad = ad
        def attack(self, js):
            print("植物攻击僵尸")
            js.hp -= self.ad
            print(f"僵尸掉血{self.ad}, 还剩下{js.hp}")
    class JiangShi:
        def __init__(self, name, hp, ad): # 1000  800
            self.name = name
            self.hp = hp
            self.ad = ad
        def attack(self, zw):
            print("僵尸咬植物")
            zw.hp -= self.ad
            print(f"植物掉血{self.ad}, 还剩{zw.hp}")
    # 植物
    wd = Plant("歪脖子豌豆", 10, 20)
    # 僵尸
    js = JiangShi("铁桶僵尸", 200, 1)
    wd.attack(js)
    wd.attack(js)
    js.attack(wd)
    js.attack(wd)
    wd.attack(js)

      

      2. 关联关系
        在对象里面埋对象
        self.girlFriend = girl
        1. 一对一关系
          你和你的女朋友

    class Boy:
        def __init__(self, name,  girlFriend=None):
            # 在初始化的时候可以给一个对象的属性设置成另一个类的对象
            self.girlFriend = girlFriend  # 一个男孩有一个女朋友
        def chi(self):
            if self.girlFriend:
                print(f"带着他的女朋友{self.girlFriend.name}去吃饭")
            else:
                print("单身狗, 吃什么吃? 滚去学习.")

      

        self.teach_list = [t1,t2,t3]
        2. 一对多关系
          一个学校. 一堆老师

    class School:
        def __init__(self, name):
            self.teach_list = [] # 这里要装多个老师
            self.name = name
        def zhaopin(self, teach):
            self.teach_list.append(teach)
        def shangke(self):
            for t in self.teach_list:
                t.work()
    class Teacher:
        def __init__(self, name):
            self.name = name
        def work(self):
            print(f"{self.name}在上课")
    
    lnh = School("老男孩")
    t1 = Teacher("武sir")
    t2 = Teacher("太白")
    t3 = Teacher("哪吒")
    lnh.zhaopin(t1)
    lnh.zhaopin(t2)
    lnh.zhaopin(t3)
    lnh.shangke()

      3. self 是谁  

        self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的
        super:表示的是父类

      4.特殊成员

    __init__() # 创建对象的时候初始化操作
    __call__() # 对象()
    __getitem__() # 对象[哈哈]
    __setitem__() # 对象[哈哈] = 值
    __new__() # 创建对象的时候.开辟内存
    __enter__() # with 对象
    __exit__() #结束with的时候
    __hash__() # 可哈希 hash()
  • 相关阅读:
    PostgreSQL的数据类型
    博客园背景页面动态特效
    css ie7中overflow:hidden失效问题及解决方法
    win10的安装、win10启动盘制作
    windows win7 win10 多系统启动菜单 多系统引导设置
    微博加关注按钮
    {转}一位北京差生9年的北京生活
    最全的CSS浏览器兼容问题
    网站开发命名详细规范
    <meta http-equiv = "X-UA-Compatible" cotent = "IE=edge,chrome=1"/>
  • 原文地址:https://www.cnblogs.com/attila/p/10145803.html
Copyright © 2011-2022 走看看