zoukankan      html  css  js  c++  java
  • python 类与类之间的关系. 特殊成员

    一.类与类之间的关系

    1.依赖关系

    在方法的参数位置把另一个类的对象作为参数进行传递

     1 class Person:
     2 
     3     def play(self, tools):  # 通过参数的传递把另一个类的对象传递进来
     4         tools.run()
     5         print('很开心, 我能玩游戏了')
     6 
     7 class Computer():
     8     def run(self):
     9         print('电脑开机.可以运行')
    10 
    11 class Phone():
    12     def run(self):
    13         print('手机开机.可以运行')
    14 
    15 c = Computer()
    16 phone = Phone()
    17 
    18 p = Person()
    19 p.play(phone)
    20 p.play(c)

    2.关联关系

    self.属性 = 对象
    self.phone = 苹果

    self.phone.play()

    多对多关系

    (1)一对一关系

     1 class Boy:
     2 
     3     def __init__(self, name, girlFriend = None):
     4         # 在初始化的时候可以给一个对象属性设置成另一个类的对象
     5         self.girlFriend =girlFriend
     6 
     7     def chi(self):
     8         if self.girlFriend:
     9             print(f'带着他的女朋友{self.girlFriend.name}去吃饭')
    10         else:
    11             print('单身狗,吃什么吃?去学习')
    12 
    13     def movie(self):
    14         if self.girlFriend:
    15             print(f'带着他的女朋友{self.girlFriend.name}去看电影')
    16         else:
    17             print('单身狗,吃什么吃?去看电影')
    18 
    19 class Girl:
    20     def __init__(self,name):
    21         self.name = name
    22 
    23 b =Boy('宝浪')
    24 g =Girl('孙艺珍')
    25 b.chi()
    26 
    27 b.girlFriend = g
    28 b.chi()

    (2)一对多关系

     1 class School:
     2 
     3     def __init__(self,name):
     4         self.teach_list = [] # 这里要装多个老师
     5 
     6     def zhaopin(self,teach):
     7         self.teach_list.append(teach)
     8 
     9     def shangke(self):
    10         for i in self.teach_list:
    11             i.work()
    12 
    13 class Teacher:
    14     def __init__(self,name):
    15         self.name = name
    16 
    17     def work(self):
    18         print(f'{self.name},在上课')
    19 
    20 lnh = School('老男孩')
    21 t1 = Teacher('wusir')
    22 t2 = Teacher('太白')
    23 t3 = Teacher('日天')
    24 t4 = Teacher('宝浪')
    25 
    26 lnh.zhaopin(t1)
    27 lnh.zhaopin(t2)
    28 lnh.zhaopin(t3)
    29 lnh.zhaopin(t4)
    30 lnh.shangke()

    3.继承关系

     1 class Base:  # 父类 => 基类 => 超类
     2     def chi(self):
     3         print('我会吃')
     4 
     5 # 派生类 = > 子类
     6 class Foo(Base):  # 这个类继承了Base类. Foo类是对Base的一个扩展
     7     def he(self):
     8         print('我会喝')
     9 
    10 f = Foo()
    11 f.chi()
    12 f.he()

    二.特殊成员

    __init__ 初始化操作
    __call__ 对象()
    __getitem__ 对象[]
    __setitem__ 对象[] = 值
    __delitem__ del 对象
    __new__ 开辟内存.
    __hash__ 可哈希. hash()
    __enter__ with 对象:
    __exit__ with 对象:结束的时候自动调用
    __iter__ iter(对象), for

  • 相关阅读:
    使用Java和JS访问cookies
    详细介绍Java内存泄露原因
    Java与Unicode
    电子商务那点事
    request的一些常用方法
    一些java当中的名词解释
    rpc远程服务
    war包和jar包的区别
    为什么内存贵硬盘便宜
    分层开发的优势
  • 原文地址:https://www.cnblogs.com/beargod/p/10196565.html
Copyright © 2011-2022 走看看