Python基础 - 9.面向对象提高

Python编程:从基础到实践(第9章)读后感 本章深入探讨了面向对象编程中的类和对象,特别是如何在Python中继承和导入类。通过实际的编程练习,介绍了如何让代码更加模块化和高效。文章还讨论了在编程过程中如何解决逻辑层面的问题,以及如何通过不同的方式表示现实世界的情况。此外,本章也触及了Python标准库的使用,特别是OrderedDict类的介绍,以及如何导入模块中的多个类。 阅读详情

面向对象思维

OOA:(Object Oriented Analysis)面向对象分析。系统分析师。UML中的用例图

OOD:(Object Oriented Design)面向对象设计。系统架构师。UML中的类图、序列图

OOP:(Object Oriented Programming) 面向对象编程。程序猿。UML中的流程图

面向对象中有6大原则,23个设计模式

开闭原则:对修改关闭;对扩展开放(对于函数,使用装饰器来扩展。对于类,使用继承来扩展)

里氏替换原则:一个功能如果父类适用,那么子类也适用;反之则未必(子类适用的功能,父类不一定适用)

如果一个类作用于某个父类,则它一定可以作用于对应的子类;反之未必(如果一个类作用于子类,则它未必能作用于父类)
在这里插入图片描述

如图:法海抓妖,蛇妖是妖的子类,所以法海碰到蛇妖一定要抓

反之,许仙喜欢白蛇,白蛇是蛇妖的子类,但是许仙不一定喜欢蛇妖

根据这个原则:如果设计两个类之间的依赖、通信关系,应该尽量往父类发展。

继承

在这里插入图片描述
Python中实现继承的方式:

class 子类名(父类名):
  子类的具体实现

父类中所有非私有的属性和方法,在子类中可以访问

子类可以访问父类的方法

# 父类:动物
class Animal:
    def eat(self):
        print('Animal eat')

# 子类:狗
class Dog(Animal):
    pass

# 
dog1 = Dog()
dog1.eat()

在这里插入图片描述

子类可以重写父类的方法

# 父类:动物
class Animal:
    def eat(self):
        print('Animal eat')

# 子类:狗
class Dog(Animal):
    def eat(self):
        print('Dog eat')

# 
dog1 = Dog()
dog1.eat()

子类还可以主动调用父类的方法

# 父类:动物
class Animal:
    def eat(self):
        print('Animal eat')

# 子类:狗
class Dog(Animal):
    def eat(self):
        super().eat() # 调用父类的方法
        print('Dog eat')

# 
dog1 = Dog()
dog1.eat()

注意:super()是在类里面调用,不能在类外面调用。如果这样写,会报错:

dog2 = Dog()
dog2.super().eat()

在这里插入图片描述

Python中的规定,如果一个类没有明确指定继承的父类,默认继承object类。

class Animal:
    def eat(self):
        print('Animal eat')

等同于

class Animal(object):
    def eat(self):
        print('Animal eat')

前面一种写法(不继承任何父类)称为经典类(马上会过时,不建议使用)

后面一种写法(继承任意一个类,比如object)称为新式类。

以后,都建议写成新式类。

如果在子类中,想要调用父类的__init__或__del__方法。通过:

  • 父类名.init(参数)

  • 父类名.del()

# 父类:动物
class Animal(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'name:' + self.name
    def __del__(self):
        print('Animal del')

# 子类:狗
class Dog(Animal):
    def __init__(self, name):
        # 尝试调用父类的__init__方法
        Animal.__init__(self,name)
    def __del__(self):
        # 尝试调用父类的__del__方法
        Animal.__del__(self)
        
# 
dog1 = Dog('旺财')
print(dog1)

如果父类中有私有属性和私有的方法,子类不能访问。

# 父类:动物
class Animal(object):
    def __init__(self, name):
        self.name = name
        self.__age = 0
    def __info(self):
        print(self.__age)
# 子类:狗
class Dog(Animal):
    def __init__(self, name):
        # 尝试调用父类的__init__方法
        Animal.__init__(self,name)
    def info(self):
        print(self.__age)
        self.__info()

dog1 = Dog('旺财')
dog1.info()

在这里插入图片描述

在这里插入图片描述
类与类之间的关系

1 继承。子类继承父类。如果两个类之间可以用“是一个”(is a)来描述,可以使用继承关系:比如:

狗是一个动物

class Animal(object):
    pass

class Dog(Animal):
    pass

2 包含。大类包含小类。如果两个类之间可以用“有一个”(has a)来描述,可以使用包含关系。比如:

狗有一条腿

class Dog(Animal):
    def __init__(self):
        self.leg = Leg()

class Leg(object):
    pass

3 通信。如果两个类之间可以通过动词连接起来,可以使用通信关系,比如:

人养狗、狗咬人

class Dog(Animal):
    def __init__(self):
        self.leg = Leg()
    # 狗咬人
    def bid(self, man):
        print(self.name + '咬' + man.get_name())

class Man(Animal):
    def __init__(self):
        self.leg = Leg()
    # 人养狗
    def feed(self, dog):
        print(self.name + '养' + dog.get_name())

在这里插入图片描述
多继承

一个子类可以继承多个父类

C++、Python是有多继承。Java是没有多继承的

骡子是驴和马的杂交。就可以认为是骡子是驴和马的子类。

多继承的格式:

class  子类(父类1, 父类2, 父类3):
  方法中的代码

比如:

class Base1(object):
    def test1(self):
        print('---Base1---')


class Base2(object):
    def test2(self):
        print('---Base2---')

# Sub是Base1和Base2的子类
class Sub(Base1, Base2):
    pass


sub = Sub()
sub.test1()
sub.test2()

钻石继承

所谓的钻石继承,就是指如下的继承方式:
在这里插入图片描述
编写如下的代码:

class Animal(object):
    # 初始化
    def __init__(self):
        print('Animal init')


class Horse(Animal):
    # 初始化
    def __init__(self):
        Animal.__init__(self) #调用父类的__init__方法
        print('Horse init')

class Lv(Animal):
    # 初始化
    def __init__(self):
        Animal.__init__(self) #调用父类的__init__方法
        print('Lv init')
        
class Luo(Horse, Lv):
    # 初始化
    def __init__(self):
        Horse.__init__(self)
        Lv.__init__(self)
        print('Luo init')
        
print('--------------------------')
luo = Luo()

运行的结果:

在这里插入图片描述

会发现Animal init调用了两次。囧么办?

C++:使用虚拟继承。

Java:不允许使用多继承

Pyton:super

class Animal(object):
    # 初始化
    def __init__(self):
        print('Animal init')


class Horse(Animal):
    # 初始化
    def __init__(self):
        #Animal.__init__(self) #调用父类的__init__方法
        super(Horse, self).__init__()
        print('Horse init')

class Lv(Animal):
    # 初始化
    def __init__(self):
        #Animal.__init__(self) #调用父类的__init__方法
        super(Lv, self).__init__()
        print('Lv init')
        
class Luo(Horse, Lv):
    # 初始化
    def __init__(self):
        #Horse.__init__(self)
        #Lv.__init__(self)
        super(Luo, self).__init__()
        print('Luo init')
        
luo = Luo()

运行的结果

在这里插入图片描述

多态

不同的事物,对同一个操作所作出的不同响应

外壳医生、屠夫、演员。Cut…

与其他编程语言(Java)比较起来,Python中的多态的概念,大大的弱化。

class Animal(object):
    def eat(self):
        print('Animal eat')

class Dog(Animal):
    def eat(self):
        print('Dog eat')


class Man(Animal):
    def eat(self):
        print('Man eat')


class Woman(Animal):
    def eat(self):
        print('Woman eat')


def do_eat(obj):
    obj.eat()


dog1 = Dog()
man1 = Man()
woman1 = Woman()
do_eat(dog1)
do_eat(man1)
do_eat(woman1)

isinstance(obj, Cls)判断某个对象obj是否某个类Cls(或它的子类)的实例

如果是则返回True 如果不是则返回False

def do_eat(obj):
    if(isinstance(obj, Animal)):
        obj.eat()

类属性和实例属性

类属性是指一个类中的所有对象都共用的属性。又称为静态属性

实例属性是指类的某个对象独有的属性,又称为非静态属性

比如:每条狗都有4条腿

比如:你们家多少人?4个:我、爸、妈、狗

如果要描述实例属性,使用“对象名. 属性名”去描述(dog1.name、self.name)

如果要描述类属性,使用“类名.属性名”去描述。

class Dog(object):
    # 类属性
    _count = 0

    def __init__(self,name):
        self._name = name
        Dog._count += 1

    def __str__(self):
        return self._name + "说:目前总共有" + str(Dog._count) + "只狗"

dog1 = Dog('旺财')
dog2 = Dog('小白')
dog3 = Dog('雪梨')
print(dog3)
print(dog2)
print(dog1)

注意:类属性也可以使用“对象名.属性名”去访问,但一般不建议。

思考:下面哪个是不能正常访问的?

类名.类属性 类名.实例属性 对象名.类属性 对象名.实例属性

类方法和实例方法

如果要实现类方法,需要:

  • 1 把实例方法的第1个参数从self改为cls,表示当前类

  • 2 在类方法前添加@classmethod

  • 3 外部调用类方法的时候,使用“类名.方法名()”

class Dog(object):
    # 类属性
    _count = 0

    def __init__(self,name):
        self._name = name
        Dog._count += 1

    def __str__(self):
        return self._name + "说:目前总共有" + str(Dog._count) + "只狗"

    # 增加狗的数量 类方法
    @classmethod # add_one = classmethod(add_one)
    def add_one(cls):
        cls._count += 1
        
dog1 = Dog('旺财')
dog2 = Dog('小白')
print(dog2)

Dog.add_one()
print(dog2)

Python中一切皆对象。类也是一个对象。比如前面的:狗类是一个对象,动物类也是一个对象。这些对象一般称为“类对象”(Class对象),“类对象”所属的类称为“类类”(Class类)。就是,在系统中会有如下的定义:

class  Class(object):
   …..

当我们写

class Dog(object):
   ….

实际上是写了

Dog = Class()

注意一点:我们之前调用的__init__的写法是:

class Horse(Animal):
    # 初始化
    def __init__(self):
        Animal.__init__(self) #调用父类的__init__方法
        print('Horse init')

因为,其实__init__方法是在类中定义的类方法。
在这里插入图片描述

静态方法

有些独立的代码,可能和类的属性、方法并没有什么关系。

但是和类本身又有关系。这些代码封装到哪里比较合适?

  • 1 封装到独立的函数中。与面向对象的思维本身有所冲突

  • 2 封装到类的方法中,但是self、cls参数感觉好像没有关系

  • 3 封装到类的独立的静态方法中

class Dog(object):
    # 类属性
    _count = 0

    def __init__(self,name):
        self._name = name
        Dog._count += 1

    # 增加狗的数量 类方法
    @classmethod # add_one = classmethod(add_one)
    def add_one(cls):
        cls._count += 1
        
    # 对象方法
    def bark2(self):
        print('旺旺')
    
    # 类方法
    @classmethod
    def bark3(cls):
        print('旺旺')
    
    # 静态方法
    @staticmethod
    def bark4():
        print('旺旺')
        
# 独立的函数
def bark1():
    print('旺旺')
        
bark1()
#bark()
dog1 = Dog('旺财')
dog1.bark2()
Dog.bark3()
Dog.bark4()

上面的bark1()函数、bark2()对象方法、bark3()类方法、bark4()静态方法,都可以实现类似的功能。

new

之前接触过的前后双下划线的方法:

  • _init_(初始化)

  • _str_(描述对象)

  • _del_(删除销毁对象)

class Dog(object):

    def __init__(self):
        print('init')
        
    def __str__(self):
        return 'str'

    def __del__(self):
        print('del')

    def __new__(cls):
        print('new')

dog1 = Dog() # __init__
print(dog1) # __str__
del dog1 # __del__
print('------')

运行程序,会发现:

在这里插入图片描述

证明只有__new__()被执行,init()没有被执行。

如何才能让__init__()被执行?需要让__new__返回一个值

def __new__(cls):
        print('new')
        return object.__new__(cls) # 让父类的__new__()方法去创建该对象
        # __new__的返回值会传递到__init__()的第一个参数中

_new_()的操作实际上是创建对象。init()的操作是初始化。init()的第一个参数是self,描述对象本身,说明当__init__被调用的时候,对象已经创建好了,现在知道,对象是在__new__()里面去创建的。

当用户调用Dog()创建一个实例的时候,到底内部做了什么事情?

  • 1 先调用__new__方法来创建并返回一个对象,用一个变量保存该对象,然后把该对象传递到__init__方法中作为第一个参数。以便初始化

  • 2 调用__init__方法。初始化该对象

  • 3 返回该对象

实现原理大致如下:

def unknown():
    obj = __new__(Dog)
    __init__(obj)
    return obj

单例

面向对象有23种设计模式。创建型模式(5种)、结构型模型(7种)、行为型模型(11种)

单例模式属于创建型模型。

在某个系统中,一个类的对象只有一个。

class Sun(object):
    pass

sun1 = Sun()
sun2 = Sun()
print(id(sun1))
print(id(sun2))
print(id(sun1) == id(sun2))

假设有一个类Sun(太阳)。太阳既然是唯一的,这里打印出来的结果应该是True

思路:创建类的时刻只有一次

如果是第一次创建对象,直接创建即可

如果不是第一次创建对象,返回之前创建过的那个

此时,就需要重写__new__方法。

class Sun(object):
    _instance = None
    # 重写__new__方法
    def __new__(cls):
        if cls._instance == None:
            # 如果该类还没创建对象 就调用父类的__new__方法创建该对象
            cls._instance = object.__new__(cls)
            return cls._instance
        else:
            # 如果该类已经创建了对象 则返回该对象本身
            return cls._instance

假如给类设置一个属性(姓名)

class Sun(object):
    _instance = None
    # 重写__new__方法
    def __new__(cls, name):
        if cls._instance == None:
            # 如果该类还没创建对象 就调用父类的__new__方法创建该对象
            cls._instance = object.__new__(cls)
            return cls._instance
        else:
            # 如果该类已经创建了对象 则返回该对象本身
            return cls._instance
            
    def __init__(self, name):
        self._name = name

    def __str__(self):
        return self._name
        

sun1 = Sun('喜洋洋')
print(sun1)
print(id(sun1))
sun2 = Sun('懒羊羊')
print(sun2)
print(id(sun2))

运行的结果

在这里插入图片描述
会发现名字被改了,如何才能让名字不能修改?

class Sun(object):
    _instance = None
    _init_flag = False
    # 重写__new__方法
    def __new__(cls, name):
        if cls._instance == None:
            # 如果该类还没创建对象 就调用父类的__new__方法创建该对象
            cls._instance = object.__new__(cls)
            return cls._instance
        else:
            # 如果该类已经创建了对象 则返回该对象本身
            return cls._instance
            
    def __init__(self, name):
        if Sun._init_flag == False:
            self._name = name
            Sun._init_flag = True

    def __str__(self):
        return self._name

练习

1 根据如图所示,类之间的关系,写出对应的代码
在这里插入图片描述

项目实战

项目需求(二)

通用类开发

  1. 目录:app/common

  2. 状态类Status, 文件status.py ,
    包括成功和失败两种状态,每个状态包含状态码和状态信息两个属性。

    1. 如成功状态调用方法Status.SUCCESS.status Status.SUCCESS.message

    2. 失败状态调用方法:Status.ERROR.status Status.ERROR.message

    3. SUCCESS 属性 status 值 200000,message 值 Success

    4. ERROR 属性 status 值 200400,message 值 Error

  3. 响应结果类 Result,文件 result.py,包括成功和失败两种返回结果。
     {

“status”: status,

“message”: message,

“data”: data

}

  1. 静态方法 success() 和 error(), status和message默认来自Status

本章项目源码

URL:https://gitee.com/yuanbaonet/master_python/tree/baoai_python_v9/

对应版本:baoai_python_v9

对应文件:sample/python/p9.py

海思芯片YOLOv8模型部署完整指南:从RPN硬化到8bit量化精度优化 本文详细介绍了在海思芯片平台部署YOLOv8目标检测模型的完整方案,重点解决8bit量化精度损失问题。通过分析海思RPN硬化层的性能优势(1.9ms推理时间),对比不同量化策略(16bit仅损失0.6AP,8bit损失5.2AP),并深入定位到strides计算层是量化误差的主要来源。关键突破在于采用混合精度策略(敏感层16bit,其余8bit),使8bit量化AP回升4.1%,同时保持3.4ms的推理速度和60%的低NPU占用率。文章还提供了量化参数调整、校准数据集优化等进阶技巧,为边缘计算应用提供了性能 阅读详情

相关推荐

迪文屏【0】——从零搭建工程:图片显示、文本变量配置与串口数据交互实战

本文以迪文屏T5L系列为例,详细介绍了从零搭建HMI工程的完整流程。内容涵盖硬件软件准备、DGUS工程创建、背景图片显示、文本变量配置,并重点演示了如何通过串口指令实时修改屏幕数据变量,实现动态交互。旨在帮助开发者快速掌握迪文屏开发的核心步骤与数据交互方法。

alpha的博客 349

c中atexit的用法

#include class Base1 { public:  Base1(int x){cout  ~Base1(){cout }; class Base2 { public:  Base2(int x){cout  ~Base2(){cout }; class Derived:public Base2,Base1 { public:  Derived(int x

diligentcat的专栏 907

一觉醒后ChatGPT 被淘汰了

近日,AI 界貌似出现了一种新的趋势:自主人工智能。这不是空穴来风,最近一个名为 AutoGPT 的研究开始走进大众视野。特斯拉前 AI 总监、刚刚回归 OpenAI 的 Andrej Karpathy 也为其大力宣传,并在推特赞扬:「AutoGPT 是 prompt 工程的下一个前沿。」

Rocky006的博客 13万+

C++基础#8:类层次中的类转换

一. 单基派生的情形:对于 class base { }; class derived: public base //public inheritance { };有以下赋值兼容规则可以遵循: 1. 派生类对象可以赋值给基类对象 但是,因为基类对象不具有派生类对象所具有的成员,因此基类对象不能赋值给派生类对象,强转也不行。 der

记录和分享程序人生的点点滴滴 4639

大模型抽取知识图谱三元组的可行性分析

通过结合传统信息抽取模型与大语言模型的混合架构,可高效完成从学术文献到知识图谱三元组的全流程构建。分阶段优化:传统模型负责粗粒度抽取,大模型负责细粒度修正。灵活提示设计:通过少样本学习引导大模型理解领域本体。严格质量控制:结合规则引擎和人工校验,确保三元组准确性。该方案可显著提升知识图谱构建效率,适用于学术研究、企业知识库等场景。

qq_20647053的博客 1066

视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop

Ps教程之神奇的Photoshop自动化技术 10年以上IT行业工作经验、三...

weixin_28812857的博客 1474

Python高效编程的9本宝藏书籍(90%新手不知道)

掌握高效编程技巧,从这9本Python程序员书籍开始。精选适合新手的冷门好书,覆盖算法、自动化、Web开发等场景,助你少走弯路快速进阶,值得收藏。

ProceChat的博客 756

OsgEarth —— 笔记1 - 创建地球的earth文件

效果         正文      1、准备一张全球的渲染图(tif格式)、一张全球的高程图(tif格式)        2、创建并编写.earth文件           在步骤1目录下创建china-simple.earth,并将如下内容写入。 <map name="Globe" type="geocentric" version="2"> <!-- 全球影像图 --> <image name="GlobeImage" driver="gdal"> &l

7681

python 面向对象全面详解

目录   一、对面向对象的理解 1、面向对象的编程---object oriented programming 2、python面向对象的重要术语: 3、函数和面向对象编程的区别 二、封装、继承、多态 1、封装(Encapsulation) 2、继承(Inheritance) 3、多态(Polymorphism) 三、面向对象的各种方法 1、静态方法  (用这个装饰器来表示 ...

日入上万 5万+

Docker 实战:使用 Docker Desktop 在 MacOS 上安装 Docker

在这采用 Docker Desktop 在 Mac 上来安装 Docker。Docker Desktop 是 Docker 的管理桌面 IDE,提供了一个直观的GUI(图形用户界面),允许您直接在本机上管理容器、应用程序以及镜像。适用于 Mac、Linux 以及 Windows 环境,允许您构建、共享和运行容器化应用程序和微服务。Docker Desktop 可以大大降低在复杂配置上的时间,因此您可以专注于编写代码。它负责端口映射、文件系统问题和其他默认设置,并定期更新 Bug 修复和安全更新。

SmartSi 8006

Natural Language Processing

作者:禅与计算机程序设计艺术 1.简介 自然语言处理(NLP)是研究如何使计算机理解和处理自然语言的理论和方法,目的是让电脑更好的理解、获取、生成、存储和沟通人类语言。20世纪80年代末,IBM的三位博士陈天奇、周博磊和王力雄在贝尔实验室创建了首个自然语言处理系统——“布莱克多·艾森豪威尔”(Bletc

AI天才研究院 724

全民一起玩python提高篇,全民一起玩Python 基础篇+提高篇+笔记2019年

介绍.png; a3 a* k# G% s' |" k% y: u' e& x' l5 N笔记及课后习题.rar+ F2 ~6 R9 f( i& Y" S+ W1 G9 f3 o1 U. M) J* r01第零回(免费预览)莫叹琐事催白发,且学Python省年华.mp4. X. o8 |7 m0 _, Z6 u/ w& l+ k1 g& Q+ j& F02第...

weixin_35391232的博客 1879

第1讲|AI产品经理全景图谱:不是“会用AI工具”,而是能对AI产品结果负责

本文从岗位本质出发,系统拆解 AI 产品经理的职责、岗位类型与能力模型,帮助读者理解 AI PM 与传统 PM 的核心差异,明确自己适合的转型方向,并建立“对 AI 产品结果负责”的产品认知。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1015

Python 面向对象基础

一、面向对象概述 如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。 对于面向过程的思想: 需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需...

weixin_30776273的博客 305

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python基础(3)-面向对象

面向对象是一种抽象化的编程思想,是相对于面向过程而言的。面向对象将功能等通过对象来实现的,将功能封装进对象,让对象去实现其中具体的细节。一切皆为对象万物皆为对象。【官方解释】:面向对象是软件开发方法,一种编程范式举例来说,洗衣服的两种方法:1、手洗:拿个桶,接水,将衣服泡湿,倒洗衣液,洗啊洗啊洗,倒掉一次两次三次水直到泡泡洗干净,拧干,晾衣服2、机洗:扔衣服到洗衣机,倒洗衣液启动洗衣机,等待洗衣机洗好晾衣服对比这两个,洗衣机洗衣服更加简单,洗衣服完成了手机需要的一二三四五N个步骤。

xiuxiuhh的博客 270

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python7️⃣:0小白基础之——Python 面向对象编程(上篇)

1、 类定义 2、 实例 3、 打印实例 4、 属性 5、 private,protected,public 6、 继承 7、 多态

博樽 605

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python基础之Day9 python是面向对象的语言(2)

contents面向对象三大特征继承 面向对象三大特征 ython 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。 封装(隐藏) \quad隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只 对外暴露“相关调用方法”。 \quad 通过前面学习的“私有属性、私有方法”的方式,实现“封装”。Python 追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。 继承 \quad继承可以让子类具有父类的特性,提高了代码的

little_yueyue的博客 250

[python基础] 面向对象——封装,继承

1、面向对象 定义:面向对象是人们按照客观世界的系统思维,把构成问题的事物分解成各个对象,建立对象的可以更好的描述某个事物在整个解决问题的步骤中的行为。 特点:抽象 封装 集成 多态 优点:易维护,易服用,易扩展。可以设计出低耦合的系统,使系统更加灵活,更加容易维护 缺点:性能比面向过程低2、类(Class) 类是显示或者思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。3、对象(Object) 对象是具有类类型的变量,类和对象是面向对象编程技术中的最基本的概念 类和对象是类似与鱼和

weixin_48819467的博客 940

全民一起玩python提高篇_杨洋博士:全民一起玩Python之基础篇+提高篇

课程介绍▶制作精细、自带吐槽,每节课程(20分钟)均耗时数十小时精心打造!▶“全民一玩Python”系列由杨洋博士精心制作,面向所有希望学习Python编程、进而能够在学习和工作中编写办公自动化、网页信息提取、数据分析处理、人工智能应用、娱乐游戏应用等实用程序的各行业人士。▶与杨洋博士另一门网易明星课程《全民一起VBA》系列一样,本课程保持了从零开始、幽默严谨、清晰全面的授课风格,并且在美工效果和...

weixin_39914243的博客 947

Python以及基础语法保姆级教程(超详细)

Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。一句话,在代码中直接被写下来的固定值(数据),就叫字面量。在Python中被引号包围住的,都是字符串。(引号可以是单引号、双引号还可以是三引号)注:三引号既可以表示字符串同时也是注释的一种方法下面是字符串的三种定义形式text1 = '我是字符串的一种形式' tetx2 = "我也是字符串的一种形式" text3 = """能做注释,也能用来当字符串""" """这里是多行注释"""函数。

书山有路勤为径,学海无涯苦作舟。 2万+

【Python基础知识-pycharm版】面向对象初步

Python013

一梦 1340

Python基础教程 面向对象的基本概念

Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程。 面向对象的最主要目的是提高程序的重复使用性。我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的。了解OOP是进一步学习Python的关键。 下面是对面向对象的一种理解,基于分类。 相近对象,归为类 在人类认知中,会根据属性相近把东西归类,并且给类别命名。比如说,鸟类的共同属性是有羽毛,通过产卵生育后代。任何一只特别的鸟都在鸟类的原型基

量慧实工作室LHStudio的博客 215

python 完全面向对象_python之路——面向对象(基础篇)

面向对象编程:类,对象面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。面向对象技术简介类(class):用来描述有相同属性和方法的对象的集合,它定义了集合中每个对象所共有的属性和方法。对象(object):类的实例创建类和对象1 classPerson:23 def __init__(self,...

weixin_39953618的博客 141

视频教程-8小时Python零基础轻松入门-Python

课程标题 课程有效期:永久观看|学习时长: **分钟| 学习计划:**天 |难度:抓取列表页“等级” 老师照片(圆形)| 讲师姓名:| 讲师介绍: (抓取课程详情页目录) **天学到大牛3年项目经验(**部分从课程详情页抓取) 【完善的技术体系】 技术成长循序渐进,帮助用户轻松掌握 掌握**(抓取课程对应的列表页分类)知识,扎实编码能力 【清晰的课程脉络】 浓缩大牛多年经...

csdngkk的博客 1694

Python面向对象初步

目录Python 面向对象初步一、面向对象是什么?二、面向对象和面向过程的区别三、对象的进化四、类的定义五、__init__构造方法和__new__方法六、实例属性和实例方法6.1 实例属性6.2 实例方法七、类对象、类属性、类方法、静态方法7.1 类对象7.2 类属性7.3 类方法7.4 静态方法7.5 内存分析实例对象和类对象创建过程7.6 __del__方法(析构函数)和垃圾回收机制7.7 __call__方法和可调用对象 Python 面向对象初步 一、面向对象是什么? 面向对象(Object

weixin_42226195的博客 537

Python9--面向对象编程

1. 面向对象编程简介 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象(引自维基百科) 2.面向对象4个核心概念 抽象 封装 继承 多态 ######.

伊洛的博客 458
上一篇: Python基础 - 8.面向对象编程
下一篇: Python基础 - 10.异常处理
idsof
博客等级 码龄21年 9粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值