标签:price 添加 内容 动作 相对 代码 super 就是 动物
# class Car: # 类名首字母大写, 严格遵守驼峰命名规范 # pass # # # 造车 # c = Car() # 类名() # 创建对象 # # 出厂之后进行改装 # c.color = "红颜色" # 对象.属性 点: 的 当属性不存在的时候. 添加一个属性 # c.pai = "京A88888" # 对象.属性 # c.pailiang = "555L" # 排量 # # print(c.color) # 此车是红颜色 # print(c.pai) # print(c.pailiang) # # c.color = "绿颜色" # 当属性存在的时候是修改属性信息. # # 对象.属性 = xxxx 设置属性信息 # # print(c.color) # # # # dict # # dic = {} # # dic[‘jay‘] = "周杰伦" # # print(dic) # # dic[‘jay‘] = "alex" # # print(dic) # class Car: # 类名首字母大写, 严格遵守驼峰命名规范 # # __init__方法是一个特殊的方法. 初始化方法. (构造方法) # # 在创建对象的时候会自动的调用__init__() # # self就是你创建出来的那个对象 # # def __init__(self, color, pai, pailiang): # init初始化方法. 在创建对象的时候. 默认执行这个函数 # # print("我是init") # # print("self = ", self) # # self.color="红色" # 在出厂的时候都是红色 # self.color = color # self.pai = pai # self.pailiang = pailiang # # c.color = "红色" # # # 跑: 动作, 功能 -> 函数 # # 在类中写的函数 -> 方法 # # self 当前类的对象. # def pao(self): # self是自动传递的. 不用管它 # print("%s我的车能跑" % self.color) # self.color # # def jump(self): # print("you jump, I jump") # # c = Car("红色", "京A88888","555L") # 创建Car类型对象. 此时self参数不需要我们管 # c2 = Car(‘蓝色‘, "京B66666", "1.6T") # print(c.color) # print(c2.color) # c.pao() # 车c跑 # c2.pao() # class Phone: # # def __init__(self, color, dianchi, num, price): # self.color = color # self.dianchi = dianchi
# 大象装冰箱 # 脚本, 此时代码是最简单的. 不需要构思整个程序的概况 # print("开门") # print("装大象") # print("关门") # 函数式编程. 比脚本麻烦. 对功能有了概况. # def kai(): # print(‘开门‘) # def zhuang(): # print("装大象") # def guan(): # print(‘关门‘) # # kai() # zhuang() # guan() # 面向对象编程, 对整个系统进行分析. 分析出需要哪些对象. 然后给对象进行归类. # 先写类. 然后使用类创建对象. 最后用对象去执行相关的操作 # class Elephant: # def __init__(self): # print("创建了一个大象") # # def kai(self): # print("开门") # # def zuan(self): # print("大象进冰箱") # # def guan(self): # print("大象把门带上") # # dx = Elephant() # dx.kai() # dx.zuan() # dx.guan() # 第一回合 # 脚本胜 # 函数侧重的是功能 # 面向对象侧重的是 归类 # PK2 # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人 # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠 # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠 # # # 面向过程: 代码非常的冗余. 尤其是参数 # def fight_superman(name, jineng): # print("%s使用%s攻击超人" % (name, jineng)) # # def fight_batman(name, jineng): # print("%s使用%s攻击蝙蝠侠" % (name, jineng)) # # def fight_spiderman(name, jineng): # print("%s使用%s攻击蜘蛛侠" % (name, jineng)) # # # fight_superman(‘小猪佩奇‘, "嘴巴嘟嘟") # fight_batman(‘小猪佩奇‘, "嘴巴嘟嘟") # fight_spiderman(‘小猪佩奇‘, "嘴巴嘟嘟") # # # class Pig: # def __init__(self, name, jineng): # self.name = name # self.jineng = jineng # # def fight_superman(self): # print("%s使用%s攻击超人" % (self.name, self.jineng)) # # def fight_batman(self): # print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng)) # # def fight_spiderman(self): # print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng)) # # # pg = Pig("小猪佩奇", "嘴巴嘟嘟") # # 不需要向原来一样传递一样的参数了 # # 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难 # pg.fight_batman() # pg.fight_spiderman() # pg.fight_superman() # 如果写一个定时任务, 半夜12点. 给老板发送财务报表(一张图) # def send_email(address, name, title, content): # print("发送邮件") # # def send_wechat(wechat_num, name, title, content): # print("发送微信") # # def send_chat(wechat_num, name, title, content): # print("发送短信") # # def send_dd(wechat_num, name, title, content): # print("发送钉钉") # # def send_oa(wechat_num, name, title, content): # print("发送OA") # class Messager: # def __init__(self, name, title, content): # self.name = name # self.title = title # self.content = content # # def send_email(self, address): # print("发送邮件") # # def send_wechat(self, wechat_num): # print("发送微信") # # def send_chat(self, phone_num): # print("发送短信") # # def send_dd(self, dd_num): # print("发送钉钉") # # def send_oa(self, oa_num): # print("发送OA") # 用面向对象就比面向过程稍微好一些. # 可维护性比原来好 # python同时支持面向对象和面向过程: # 面向过程: 应用程序相对比较小. 不需要大规模的设计 # 面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构) # java : 纯面向对象 => 可以把一个微型项目. 做成巨型项目
# self.num = num # self.price = price # # def call(self, ren): # print("使用我的%s颜色价值%s的电话打给%s" % (self.color, self.price, ren)) # # def play(self):
# 封装: # 1. 对属性的封装 # 2. 对功能的封装 # 3. 模块 # 4. 包 # class Student: # def __init__(self, num, name, clazz): # self.num = num # self.name = name # self.clazz = clazz # # # stu = Student("10010", "曹宝宝", "三年二班") # 把多个信息(值) 保存在一个对象里面 # stu2 = Student("10086", "王迪", "三年一班") # # def kill_stu(s): # print("杀%s" % (s.name)) # # # kill_stu(stu2) # class Game: # # def login(self): # print("登录") # # def recharge(self): # print("充钱") # # def uninstall(self): # print("卸载") # # def zhaoduixiang(self): # print("找对象") # # # # # # class Game1: # # def recharge(self): # print("充钱") # # def uninstall(self): # print("卸载") # # # class Game2: # # def recharge(self): # print("充钱") # # def uninstall(self): # print("卸载") # # g = Game2() # g.uninstall()
# 子类自动拥有父类中除了私有内容外的其他所有内容 # 王思聪(熊猫TV) -> 王健林(年龄) # 继承目的: 对父类进行扩展 # class Foo: # def getMoney(self): # print("拿钱") # # # class Bar(Foo): # pass # # # b = Bar() # b.getMoney() # 此时调用的是父类中的方法 # 当出现xxx是一种yyy类型的东西. 可以使用继承关系 # 猫是一种动物 # class Animal: # def dong(self): # print("动物会动, 顾雍") # # class Cat(Animal): # 子类其实是对父类的一种扩展 # def catchMouse(self): # print("猫很皮, 抓老鼠") # # # c = Cat() # # c.dong() # # c.catchMouse() # # a = Animal() # 父类的对象不能执行子类中的功能 # a.dong() # a.catchMouse() # 创建的是动物. 动物不能执行抓老鼠 # class Animal: # def dong(self): # print("动物会动, 顾雍") # # class Cat(Animal): # 子类其实是对父类的一种扩展 # def dong(self): # 子类中写了和父类一模一样的方法. 这个叫方法的覆盖, 重写 # print("猫上蹿下跳") # # def catchMouse(self): # print("猫很皮, 抓老鼠") # # c = Cat() # 创建的是猫. # c.dong() # 类中的方法的查询顺序. 先找自己, 然后再找父类 # python支持多继承 class Foo1: def getMoney(self): print(‘给你个大嘴巴子‘) def play(self): print("玩儿") class Foo2: def getMoney(self): print(‘给多点儿‘) class Bar(Foo1, Foo2): # 离当前类最近的是亲爹, 后面的是干爹. pass b = Bar() # 就近原则, MRO的C3算法 b.getMoney() # Foo2里的
# 多态性: 同一个对象. 多种形态. # python支持的是鸭子类型. 会嘎嘎叫的东西就是鸭子 # 为了程序能够正常执行. 本来需要传递进来一只鸭子. 但是我只需要传递一个会嘎嘎叫的东西就可以了 # def func(yazi): # yazi.gagajiao() # class Animal: # def chi(self): # print("会吃") # # class GoldenMonkey(Animal): # def chi(self): # print("用手拿着吃, 五花八门") # # class Tiger(Animal): # def chi(self): # print("老虎吃肉") # # class Elephant(Animal): # def chi(self): # print("大象吃香蕉") # # class QiE(Animal): # def chi(self): # print("企鹅吃人民币") # # # 以下代码是饲养员 # # 优点:超强的可扩展性. 面向对象的核心就是多态 # def wei_animal(ani): # 传进来的东西要会吃就行 # ani.chi() # # # 动物园 # t = Tiger() # m = GoldenMonkey() # e = Elephant() # # wei_animal(t) # wei_animal(m) # wei_animal(e)
# print("电话可以打游戏") # # # sj = Phone("黑色", "5W安", "110", "9W欧元") # sj.call("嫂子") # sj.play()
标签:price 添加 内容 动作 相对 代码 super 就是 动物
原文地址:https://www.cnblogs.com/274831730wang/p/10133195.html