码迷,mamicode.com
首页 > 编程语言 > 详细

python-面向对象

时间:2018-12-17 20:13:40      阅读:245      评论:0      收藏:0      [点我收藏+]

标签: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()

 

python-面向对象

标签:price   添加   内容   动作   相对   代码   super   就是   动物   

原文地址:https://www.cnblogs.com/274831730wang/p/10133195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!