python-面向对象,,# class Ca


# 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): # 离当前类最近的是亲爹, 后面的是干爹.    passb = 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()

python-面向对象

评论关闭