博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于python的面向对象
阅读量:7002 次
发布时间:2019-06-27

本文共 5196 字,大约阅读时间需要 17 分钟。

一,面向对象

1..面向对象的过程:一切以事物的流程为核心,核心是过程二字,过程是指解决问题的步骤,

是一种机械是的编程思维

优点:负责的问题流程化,编写相对简单 缺点:可扩展性能差

2.面向对象一切以对象为中心

优点:可扩展性强  缺点:编程复杂度高于面向过程

面向对象的编写

class Car:     passc=Car()c.lunzi="圆的"c.red='骚红色'c.pailiang="6.31"c.pai="粤b无数"c.price="200000"print(c.price)b=Car()b.yanse="绿色"b.year="10年"b.price="100万"b.paizi="宝马"b.排量="5.42"print(b.排量)

 

class Computer:    # 构造方法. 在创建的对象的时候由系统自动访问这个方法    # self: 自己. 自身. 类的对象. 当前正在创建的对象    def __init__(self, pinpai, price, cpu, neicun): # 谁在调用, self就是谁, self 由python自动传递        self.pinpai = pinpai        self.price = price        self.cpu = cpu        self.neicun = neicun    # 方法. 该类型的对象能够执行哪些操作    def dayouxi(self, game): # 谁调用的这个方法. self就是谁        # 我用我的self.pinpai的调用. 利用很牛B的self.cpu来完成吃鸡操作        print("我要打游戏, 我要%s" % game)c = Computer("微软",25000,"i9","5T") # 创建对象c.dayouxi("吃鸡")c2 = Computer("mac book", 22000, "i7", "16G")print(c2.price)c.pinpai = "神州"c.price = 100c.cpu = "赛扬双核"c.neicun = "1G"c2 = Computer()c2.pinpai = "小米"c2.price = 10000c2.cpu = "I7-8750"c2.neicun = "1T"print(c2.pinpai) # 小米print(c.pinpai) # 神州

  

思考过程:准备创建类 -> 定义__init__()  self.xxx = xxxx对象能干什么事儿?  方法. def 方法名(self, 参数...)练习题: 1. 创建⼀个武松. 武松可以打老虎, 杀嫂⼦, 替天⾏道class HaoHan:    def __init__(self, waihao, name, wuqi, jineng):        self.waihao = waihao        self.name = name        self.wuqi = wuqi        self.jineng = jineng    def dalaohu(self):        pass    def shasaozi(self):        pass    def titianxingdao(self):        passws = HaoHan("行者", "武松", "拳头", "王八拳")ws.dalaohu()ws.shasaozi()ws.titianxingdao()lk = HaoHan("黑旋风", "李逵", "双板斧", "旋风斩")lk.dalaohu()lk.shasaozi()lk.titianxingdao() 2. ⽤⾯向对象的思维来模拟LOL⾥的盖伦(英雄)上阵杀敌.class Tank:    def __init__(self, name, waihao, hp, fy):        self.name = name        self.waihao = waihao        self.hp = hp        self.fy = fy    def kang(self):        pass    def zhengyishenpan(self):        passgailun = Tank("盖伦","德玛西亚之力", 5000, 200) 3. 编写和尚类. ⾃⼰⾃由发挥和尚有哪些属性和⽅法.class HeShang:    def __init__(self, fahao, simiao):        self.fahao = fahao        self.simiao = simiao    def nianjing(self):        pass    def marray(self):        pass
#  4. ⽤⾯向对象的思维来完成⽤户登录.class User:    def __init__(self, username, password):        self.username = username        self.password = password    def login(self, uname, upws):        if uname == self.username and upws == self.password:            return True        else:            return Falseu1 = User("alex", "123")ret = u1.login(input("请输入你的用户名"), input("请输入密码"))print(ret)
主语发生了改变 函数式编程. 简单的基本功能还是函数式编程更加好用 面向对象: 如果功能非常复杂的时候.
例一:要把大象装冰箱:面向对象的过程def open():    print("开门")def zhuang():    print("装大象")def close():    print("关门")open()zhuang()close()例二:面向对象:class DaXiang:    def open(self):        print("开门")    def jinbingxiang(self):        print('进冰箱')    def guanmen(self):        print("关门")dx = DaXiang()dx.open()dx.jinbingxiang()dx.guanmen()

  

面向对象过程#  alex大战奥特曼def daZhanAoTeMan(name, wuqi, jineng):    print("%s 使用 %s 配合 %s技能狂怼奥特曼" % (name, wuqi, jineng))# alex大战哥斯拉def daZhanGeSiLa(name, wuqi, jineng):    print("%s 使用 %s 配合 %s技能狂怼哥斯拉" % (name, wuqi, jineng))# alex大战蝙蝠侠def daZhanBianFuXia(name, wuqi, jineng):    print("%s 使用 %s 配合 %s技能狂怼蝙蝠侠" % (name, wuqi, jineng))daZhanAoTeMan("alex", "菜刀", "动感光波")daZhanGeSiLa("alex", "菜刀", "动感光波")daZhanBianFuXia("alex", "菜刀", "动感光波")面向对象:对象做主语执行动作class Person:    def __init__(self, name, wuqi, jineng, taopaoluxian):        # 封装: 对属性的封装.        self.name = name        self.wuqi = wuqi        self.jineng = jineng        self.taopaoluxian = taopaoluxian    # 对方法进行封装    def daZhanAoTeMan(self):        print("%s 使用 %s 配合 %s技能狂怼奥特曼" % (self.name, self.wuqi, self.jineng))    # alex大战哥斯拉    def daZhanGeSiLa(self):        print("%s 使用 %s 配合 %s技能狂怼哥斯拉" % (self.name, self.wuqi, self.jineng))    # alex大战蝙蝠侠    def daZhanBianFuXia(self):        print("%s 使用 %s 配合 %s技能狂怼蝙蝠侠" % (self.name, self.wuqi, self.jineng))a1 = Person("alex", "菜刀", "动感光波", "打车跑")a1.daZhanAoTeMan()a1.daZhanBianFuXia()a1.daZhanGeSiLa()
继承: 子类自动拥有父类中除了私有内容外的其他所有的属性:
例一class Niu:    def da(self):        print("牛魔王打架很厉害")class HongHaiEer(Niu):    def da(self):        print("喷火")hhl = HongHaiEer()hhl.da()例二

多肽:同一对象拥有多种形态

同一个对象. 拥有多种形态 java c++class Aniaml:    def dong(self):        print("动物可以动")class Cat(Aniaml):    def chi(self):        print("猫喜欢吃鱼")a = Cat()a.chi() # 站在猫的角度. 可以吃a.dong() # 站在动物的角度可以动# 在python中多态的效果感受不够明确class YaoGuai:    def teng(self):        print("妖怪一定会疼")class ZhiZhuJing(YaoGuai):    def teng(self):        print("蜘蛛精很痛")class HeiXiongJing(YaoGuai):    def teng(self):        print("黑熊精也很疼")class BaiGuJing(YaoGuai):    def teng(self):        print("白骨精骨头很疼")class JinJiaoDaWang(YaoGuai):    def fangundeteng(self):        print("爆炸的疼")class SunWuKong:    def da(self, yg):        yg.teng() #  只要包含了xxx功能的内容都可以试用. 鸭子模型  ->  多态性# 西游记开始swk = SunWuKong()hxj = HeiXiongJing()swk.da(hxj)bgj = BaiGuJing()swk.da(bgj)zzj = ZhiZhuJing()swk.da(zzj)alex = JinJiaoDaWang()swk.da(alex)

多继承:就近原则:

class Foo1:    def money(self):        print("有钱")class Foo2:    def play(self):        print("玩儿")    def money(self):        print("没钱")class Bar(Foo2, Foo1): # MRO c3算法    passb = Bar()b.money()

  

 

转载于:https://www.cnblogs.com/liucsxiaoxiaobai/p/9917994.html

你可能感兴趣的文章
div内快元素[div,p。。。]居中办法
查看>>
2017届高三(下)高考模拟(理科)数学试题(自己命题与写代码)
查看>>
swagger-editor
查看>>
Groovy与Java集成常见的坑(转)
查看>>
SpringMVC(转)
查看>>
__tostring用法,__call处理调用,__clone克隆对象
查看>>
PHP读取文件
查看>>
免费的区块链学习资料
查看>>
ILSVRC
查看>>
matlab超限像素平滑法_脉冲伏安法理论基础
查看>>
arduino 串口读取字符串_Arduino传感器教程 第24章NRF24L01 控制电舵机
查看>>
状态码202_HTTP状态码(HTTP Status Code)
查看>>
sharepoint 2010 网站集定期备份
查看>>
管理SCCM/MDT中的驱动分类
查看>>
java之HashTable
查看>>
Windows Server 2012体验之配置存储池
查看>>
轻松上手移动互联——百度SiteApp建造日志
查看>>
我从跑步中领悟到了什么?
查看>>
你的权限等于你的可见度
查看>>
Gartner:威胁情报的定义
查看>>