鱼C论坛

 找回密码
 立即注册
查看: 1723|回复: 0

[学习笔记] A-18-类和对象2

[复制链接]
发表于 2018-7-18 10:52:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #coding=UTF-8

  2. #知识点总结
  3. """
  4. 1.继承机制可以减少代码量, 其中如果一个类A继承来自另一个类B, 则称A为B的子类, B为A的父类.继承可以使子类具有父类的各种方法和属性,
  5.   在继承时,可以重新定义某种属性或重写某种方法来覆盖父类原有的属性或方法,使其获得和父类不同的功能.
  6. 2.函数__init__  返回为None,不能返回除了None以外的对象
  7. 3.函数super():在想要继承原有的__init__方法并进行修改时,在子类的 __init__ 内使用 super().__init__() 即可保留原有的内容
  8. 4.多重继承(钻石继承, 菱形继承): 可以同时继承多个类, 但有缺点, 尽量不要使用

  9. 5.组合:当继承不太适用时使用, 就是在类中把需要的类放进去实例化
  10. 6.对于修改类实例化对象中的变量时, 不会对类中的属性进行修改, 类中的属性就相当于静态变量,
  11.   当类被删除后, 类实例化对象依然可以调用方法, 因为删除的值是类的名字, 其中的方法还保留在内存中

  12. 5. __dict__(): 可以查看 类或类对象的实例化对象 的属性

  13. 6. __del__(self): 在创建的实例被删除后会被调用
  14. """

  15. #1.继承
  16. class  Parent:  #创建类
  17.     def  hello(self):
  18.         print("正在调用父类...")

  19. class  Child(Parent):   #继承父类
  20.     pass

  21. p = Parent()  #实例化对象
  22. p.hello()     #访问类的方法(函数)
  23. c = Child()
  24. c.hello()

  25. class  Child(Parent):
  26.     def  hello(self):
  27.         print("正在调用子类的方法...")
  28. c = Child()
  29. c.hello()

  30. #2.继承
  31. import  random as r

  32. class  Fish:
  33.     def  __init__(self):
  34.         self.x = r.randint(0, 10)
  35.         self.y = r.randint(0, 10)

  36.     def  move(self):
  37.         self.x -= 1
  38.         print("我的位置是: ", self.x, self.y)

  39. class  Goldfish(Fish):
  40.     pass

  41. class  Carp(Fish):
  42.     pass

  43. class  Salmon(Fish):
  44.     pass

  45. class  Shark(Fish):
  46.     def  __init__(self):
  47.         super().__init__()   #可保留_init原有的内容
  48.         self.hungry = True

  49.     def  eat(self):
  50.         if  self.hungry:
  51.             print("吃吃吃")
  52.             self.hungry = False
  53.         else:
  54.             print("吃饱了")
  55. a=Shark()
  56. for i in range(3):
  57.     a.eat()  #已实例化,self可以不用写

  58. c=Goldfish()
  59. for i in range(3):
  60.     c.move()

  61. b=Fish()
  62. for i in range(3):
  63.     b.move()


  64. #3.组合
  65. #助记:当遇到 水里有鱼,天上有鸟 这种情况时使用组合;当遇到 鲤鱼是鱼,相思鸟是鸟 这种情况时使用继承
  66. class Turtle:
  67.     def __init__(self, x):
  68.         self.num = x

  69. class Fish:
  70.     def __init__(self, x):
  71.         self.num = x

  72. class Pool:
  73.     def __init__(self, x, y):
  74.         self.turtle = Turtle(x)        # 组合乌龟类进来
  75.         self.fish = Fish(y)            # 组合鱼类进来

  76.     def print_num(self):
  77.         print("水池里总共有乌龟 %d 只,小鱼 %d 条!" % (self.turtle.num, self.fish.num))

  78. pool = Pool(1, 10)
  79. pool.print_num()

  80. #4.
  81. class C:
  82.     num = 0       #num和count为类属性
  83.     def __init__(self):
  84.         self.x = 4   #x和y为实例属性
  85.         self.y = 5
  86.         C.count = 6
  87. a=C()
  88. print(a.x)
  89. del C
  90. print(a.x)
  91. print(C.x)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 13:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表