可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

实习日记 2020-01-10

News dant03211975 1191℃ 0评论

今天继续导师安排的任务,快速学习Python

内容包含:多继承:MRO方法搜索顺序、新式类和旧式类,多态,类属性、类方法、静态方法

多继承

在昨天写的多继承,如果出现重复的属性或者方法,可以使用 MRO方法搜索顺序 来确定解释器对代码的执行顺序

# 确定C类对象的输出顺序 print(C.__mro__)  #--------------------- # (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>) #  # Process finished with exit code 0 #---------------------

新式类和旧式类

# Python 2.x  # 新式类 "object"是所有类的父类 -- 推荐使用 -- class Cat(object):  def meow(self):   print("喵呜")   # 旧式类(经典类) 区别在于"object" -- 不推荐使用 -- class Cat:  def meow(self):   print("喵呜")   # Python 3.x # 无论是否指定"object"为父类,都会使用新式类 class Cat:     def meow(self):         print("喵呜")     # Tips:为了代码可以同时在Python2.x/3.x运行,建议定义类的时候,统一继承自"object" class 类名(object):  pass  # 创建对象 # 对象 = 类 XiaoHei = Cat()  # 调用对象包含的方法 XiaoHei.meow()   #----------------- # 喵呜 #  # Process finished with exit code 0 #-----------------   # 查看对象XiaoHei的属性 dir(XiaoHei)  ['__喵__', '__咪__', '__嗷__']

多态

不同的子类对象,调用相同父类方法,产生不同的执行结果
多态可以增加代码的灵活度
继承重写父类方法为前提
是调用方法的技巧,不会影响类的内部设计

多态:让不同的子类对象,调用相同的父类方法,产生不同的结果

class Dog(object):     """封装一个犬类"""     # 定义一个初始化函数,并且定义一个name属性     def __init__(self, name):         self.name = name     # 定义普通犬类的玩耍方式     def game(self):         print("%s 蹦蹦跳跳" % self.name)   class XiaoTianQuan(Dog):     """创建一个哮天犬类,重写父类的game"""     def game(self):         print("%s 在天空遨游" % self.name)   class Person(object):     # 初始化方法,定义名字属性     def __init__(self, name):         self.name = name      def game_with_dog(self, dog):         print("%s 和 %s 玩耍" % (self.name, dog.name))          # 让犬玩耍         dog.game()   # 创建一个犬对象 # wangcai = Dog("旺财")  # 创建一个哮天犬对象 wangcai = XiaoTianQuan("飞天旺财") # 创建一个小明对象 xiaoming = Person("小明") # 让小明调用狗玩的方法 xiaoming.game_with_dog(wangcai)  #------------------- # 小明 和 飞天旺财 玩耍 # 飞天旺财 在天空遨游 #  # Process finished with exit code 0 #-------------------

类属性、类方法、静态方法

实例

对象创建后,内存中就有了一个对象实实在在的存——实例

创建出来的 对象 叫做 类的实例
创建对象的 动作 叫做 实例化
对象的属性 叫做 实例属性
对象调用的方法 叫做 实例方法

类是一个特殊的对象——类对象,也可以定义 类属性类方法
class A: 定义的类属于 类对象
obj1 = A() 利用这个 类对象 创建出来的 对象 叫做 实例对象
程序运行时,类也会被加载到内存
类对象 在内存中只有 一份,实例对象 在内存中可以有 很多份

定义类属性,在类名下方使用赋值语句就可以,使用类属性记录跟类相关的特征,不会记录具体对象的特征。

class Tool(object):     """定义一个工具类,并演示类属性"""      # 使用赋值语句定义类属性,记录所有工具的数量(调用次数)     # 类属性名称 =     count = 0      def __init__(self, name):         self.name = name          # 使用类名调用,每次调用工具类,计数+1         Tool.count += 1   # 创建工具对象 tool1 = Tool("小刀") tool2 = Tool("剪刀") tool3 = Tool("水桶")  # 输出工具类的总数(调用次数) # 使用类名输出 -- 推荐使用 -- print("工具对象总数 %d" % Tool.count)  # 输出工具类的总数(调用次数) # 使用对象名也可以输出,但是可能会造成混淆 -- 不建议使用 -- print("工具对象总数 %d" % tool3.count)  # ---------------- # 工具对象总数 3 # 工具对象总数 3 #  # Process finished with exit code 0 # ----------------

 

转载请注明:逗比根据地 » 实习日记 2020-01-10

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址