python面向对象案例分析(python面向对象开发)

发布时间:2022-11-16

本文目录一览:

  1. python:第二部分:面向对象:面向对象object orinted
  2. python面向对象编程题?
  3. Python中的面向对象(进阶)
  4. python为什么是面向对象的
  5. python面向对象的问题

python:第二部分:面向对象:面向对象object orinted

面向过程:

  1. 分析解决问题在步骤并解决。
  2. 公式:程序=算法+数据结构
  3. 优点:所有环节细节自己掌握
  4. 缺点:所有细节都自己考虑,工作量大

面向对象:

  1. 找出解决问题的人,然后分配职责。
  2. 公式:程序=对象+交互
  • 思想层面:可模拟现实场景,更接近人类思维。
    有利于梳理归纳,分析解决问题。
  • 技术层面
    • 高复用:对重复代码封装,重复利用。提高开发效率
    • 高扩展:增加新的功能,不修改以前的代码
    • 高维护:代码可读性好,逻辑清晰,结构规整。

类与对象:

  • :抽象的概念,即生活中的类别
  • 对象:类的具体实例,即归属于某个类别的“个体”
  • 类是创建对象的模板
  • 数据类型:名词类型的状态
  • 方法成员:动词类型的行为 类与类行为不同,对象与对象数据不同。

类的语法:

class 类名:

示例代码:

class che:
    # 数据成员
    def __init__(self, name, chelun):  # self是调用当前方法的对象地址
        self.name = name
        self.chelun = chelun
    # 行为成员
    def chexing(self):
        print(self.name + "开车")
# 创建对象:实际在调用__init__方法
qiche = che("小桥车", "更换")  # self:参数自动将对象地址传入方法
# 调用对象的行为
qiche.chexing()  # self:参数自动将对象地址传入方法
print(qiche.name)  # self:参数自动将对象地址传入方法
print(qiche.chelun)  # self:参数自动将对象地址传入方法

列表反置示例:

class listpx:
    def __init__(self, lista):
        self.lista = lista
        self.imte = 0
        self.ymte = 0
    def paixu(self):
        for self.imte in range(len(self.lista)):
            for self.ymte in range(self.imte + 1, len(self.lista)):
                self.lista[self.imte], self.lista[self.ymte] = self.lista[self.ymte], self.lista[self.imte]
        print(self.lista)
list01 = [2, 3, 1, 5, 4]
listb = listpx(list01)
listb.paixu()
list02 = [23, 54, 78]
listc = listpx(list02)
listc.paixu()
# 调用规则:先给类变量传值,再调用类方法。

python面向对象编程题?

这是一个面向对象编程的题目,可以考虑如下思路:

类设计:

  • 省份类:包含属性为名称,即省份名称
  • 地级市类:继承省份类,包含以下属性:
    • 地级市名称
    • 所持有货物数量
    • 所持初始资金数量(为了计算利润)
    • 当前所持资金数量
    • 供应商(这也是一个地级市类的对象)
    • 从供应商处购买商品次数计次
    • 卖给其他买家商品次数计次

方法设计:

  • 添加供应商(将供应商的引用添加至属性“供应商”中)
  • 购买一个商品:
    • 供应商货物数量 -1
    • 所持资金数量 +100
    • 购买者货物数量 +1
    • 所持资金数量 -100
    • 从供应商处购买商品次数计次 +1
  • 卖出一个商品(参数表:购买者):
    • 卖出者货物数量 -1
    • 持有资金数量 +110
    • 购买者货物数量 +1
    • 持有资金数量 -110
    • 卖给其他买家商品次数计次 +1
    • 若卖给其他买家商品次数计次对4取余数为0,则:
      • 卖出者持有资金数量 -110 +70
      • 供应商货物数量 +1
      • 供应商所持资金数量 -70

主程序设计:

创建一个省份和三个地级市对象,创建循环体,在循环中依次从供应商处购买商品,当购买次数超过4次后,向第三个买家出售商品。

Python中的面向对象(进阶)

实例方法、类方法、静态方法

我们首先写一个类,里面包含这三种方法。 可以看到,我们用到了两个装饰器。 我们用类和实例分别调用下类方法和静态方法。 静态方法其实就是把一个普通的函数写在类里,与直接在外层写一个函数是一样的,本质上是一个函数。 为了方便理解,我们分别打印下这些方法的类型。 通过 type() 查看对象是方法还是函数。 此外,还可以通过 inspect 模块判断某个对象是否是某种类型,返回布尔值。

小Tips:概念理解

  • 直接 def 定义的,我们叫做函数
  • 把函数放到类里,我们叫做方法
  • 方法可以通过装饰器 staticmethod 转为(放在方法里的)函数

继承

一个类继承另一个类时,会自动获得另一个类的所有属性和方法,被继承的类称之为父类,新类称为子类。子类拥有父类所有的属性和方法,并且可以定义自己的属性和方法。 我们以上边的 Rectangle 类为父类来试一下:

  1. 完全继承
    可以看到,子类完全继承父类后,可以直接调用父类的所有方法。
  2. 部分继承
    部分继承:继承父类后,修改父类的同名方法
  3. 拓展父类的方法
    在保留父类中某个方法的代码同时,对方法进行拓展。
    可以在方法中加入 super().方法名 来实现。
  4. @property

python为什么是面向对象的

Python 虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于 Python 来说一切皆为对象。正因为如此,在 Python 中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写法也是可以的,Python 并不做硬性的限制。

Python 的面向对象特征如下:

封装

面向对象程序设计中的术语对象(Object)基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。传统意义上的“程序=数据结构+算法”被封装“掩盖”并简化为“程序=对象+消息”。对象是类的实例,类的抽象则需要经过封装。封装可以让调用者不用关心对象是如何构建的而直接进行使用。

继承

  • 类继承:继承给人的直接感觉是这是一种复用代码的行为。继承可以理解为它是以普通的类为基础建立专门的类对象,子类和它继承的父类是 IS-A 的关系。
  • 多重继承:不同于 C#,Python 是支持多重类继承的(C# 可继承自多个 Interface,但最多继承自一个类)。多重继承机制有时很好用,但是它容易让事情变得复杂。

多态

多态意味着可以对不同的对象使用同样的操作,但它们可能会以多种形态呈现出结果。在 Python 中,任何不知道对象到底是什么类型,但又需要对象做点什么的时候,都会用到多态。方法是多态的,运算符也是多态的。 相关推荐:《Python教程》以上就是小编分享的关于 python 为什么是面向对象的的详细内容希望对大家有所帮助,更多有关 python 教程请关注环球青藤其它相关文章!

python面向对象的问题

  • 第二种相当于是局部变量,除了 __init__ 函数外,其他的地方都不能访问。
  • 第三种相当于是类的属性,每个具体的对象有不同的值,在其他类中如果生成了对象 b,如 b = a(),使用 b.aa 可以访问到。
  • 第一种是定义了类的变量,所有的对象共享该变量,在其他类中使用 a.aa 可以访问到,注意这里 a 是类的名字,也可以通过每个对象访问到,如 b = a()c = a(),则 b.aac.aaa.aa 都是访问的一个东西,值是一样的。