python-面向对象,,# class Ca
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-面向对象
相关内容
- Python 从相对路径下import的方法,pythonimport
- 解决python中无法自动补全代码的问题,解决python补全代
- Django内容增加富文本功能的实例,django实例
- Pycharm学习教程(3) 代码运行调试,pycharm教程
- Python中%r和%s的详解及区别,python%r%s详解
- python类中super()和__init__()的区别,python__init__
- Python编程中对super函数的正确理解和用法解析,pythons
- 深入解析Python编程中super关键字的用法,pythonsuper
- Python批量修改文本文件内容的方法,
- 在Python的Django框架中为代码添加注释的方法,pythondja
评论关闭