Python 中关于面向对象的相关知识

简介: Python 中关于面向对象的相关知识

面向对象特点

注重对象与职责,不同对象,不同职责;

应对复杂项目开发,提供固定模版;

基于面向过程;

封装:根据功能将属性和方法封装到一个抽象的类中;

继承:实现代码复用,相同代码不需多次编写;

多态:不同对象调用相同方法得出不同结果,增加了代码的灵活度;

对象

类创建出来的一个具体存在,可直接使用,拥有类所具有的属性与方法;


类与对象的关系

类是模版,对象根据类创建而出,先有类再有对象;

类只有一个,但对象可以有多个;

类中定义属性与方法,对象中只能具有所创建而出的类所具有的属性与方法;

类的设计三要素

类名:一般满足大驼峰命名法;

属性:一类事物所具有的特征;

方法:一类事物所具有的行为;

添加类的属性

在创建类之后,对象可以在外部直接使用.属性名 给对象增加属性,但是这种方式不推荐使用,因为它并没有将属性封装到类的内部中,只是对象临时的属性;

在初始化方法内部定义属性之后,在使用该类创建新对象时,所创建的新对象都会拥有该属性,使用方法:self.属性名 = 属性初始值;

对象及内置方法生命周期

方法 功能

__init_ 初始化对象并设置属性

__del_ 销毁对象

__str_ 必须返回一个字符串,定制变量的输出信息

对象从调用类名()创建时生命周期即开始;

对象生命周期内,既可以访问对象属性,也可以调用对象方法;

对象的__del__方法一旦调用,对象的生命周期即结束;

身份运算符

功能:用于比较两个对象内存地址是否一致–即判断是否是对同一对象的引用;

is和==的区别

is用于判断两个变量引用对象是否为同一个;

==用于判断引用变量的值是否相等;

私有属性与方法

定义方式:属性名或方法名之前增加两个下划线,则定义的属性或方法就是私有属性或方法;

特点:在对象方法外部是不能直接访问的,只有在方法内部才能够访问;

子类对象不能直接访问父类私有属性或私有方法,但可以通过父类的公有方法间接访问私有属性或私有方法;

伪私有属性与方法

对于定义的私有属性与方法,通过_类名__名称的方式即可访问,所以说私有属性或方法并非真正意义的私有,而是内部通过特殊处理伪装起来使得外界无法访问的。虽然私有属性或方法我们都可以访问,但日常开发中最好不要使用这种方式来访问私有属性或方法;

注意

内置函数__str__必须返回一个字符串;

对象的方法内部,可以直接访问对象属性;

对于多个对象之间,各自的属性是互不干扰的;

继承

语法

class A(B):

pass


子类继承于父类,拥有父类所封装的属性与方法,无需二次开发;

子类只需要封装属于自己特有的,有别于父类的属性与方法即可;

特性:传递性;

方法重写:

覆盖基类方法;

对基类方法进行拓展,需要使用super().父类方法来调用父类方法的执行,然后在方法中其他位置进行对子类方法的扩展;

多继承

语法

class 子类名(父类名1, 父类名2,...):

pass


注意事项

父类名应该避免重复;

不同父类中的属性或方法应该避免同名;

新式类与经典类

新式类

class A(object):

   pass


经典类

class A:

   pass


实例化

每个对象实例化是都有自己独立的内存空间,用于保存各自不同的属性;

而多个对象的方法在内存中只有一份,在调用方法时需要吧对象的引用传递到方法内部;

类方法

语法

@classmethod

def 类方法名(cls):

   pass


在类方法内部

通过cls.访问类的属性;

通过cls.调用其他类方法;

静态方法

需要封装为静态方法的情况:

无需访问实例属性或实例方法;

无需访问类属性或类方法;

语法

@staticmethod

def 静态方法名():

   pass


实例方法、类方法、静态方法之间的区别

实例方法:方法内部需要访问实例属性,实例方法内部需使用类名.访问类属性;

类方法:方法内部只需要访问类属性;

静态方法:方法内部不需访问实例属性与类属性;


目录
相关文章
|
1月前
|
Python
python-面向对象
python-面向对象
14 2
|
5月前
|
Python
74 python - 打飞机案例(显示控制玩具飞机-面向对象)
74 python - 打飞机案例(显示控制玩具飞机-面向对象)
32 0
|
1月前
|
Java 程序员 数据安全/隐私保护
Python教程第6章 | Python面向对象
Python面向对象概念、类的定义和调用、类方法、修改和增加类属性、类和对象、初始化函数、类的继承、类的多态、类的访问控制
40 0
|
1月前
|
Python
|
2月前
|
机器学习/深度学习 人工智能 IDE
Python是一种高级、解释型、交互式和面向对象的脚本语言
Python是一种高级、解释型、交互式和面向对象的脚本语言
24 2
|
3月前
|
Python
【Python30天速成计划】6. 面向对象的继承和多态
【Python30天速成计划】6. 面向对象的继承和多态
|
3月前
|
Python
python 面向对象之继承
python 面向对象之继承
|
3月前
|
Python
Python基础学习 -- 面向对象
Python基础学习 -- 面向对象
15 0
|
3月前
python-pathlib模块使用 --- 面向对象的文件系统路径
python-pathlib模块使用 --- 面向对象的文件系统路径
20 0
|
3月前
|
算法 Python 容器
Python之变量命名、运算符和面向对象
【1月更文挑战第1天】 1、注释 注释分为单行注释和多行注释两种,单行注释用#表示,多行注释用(三个双引号"“”“”")或‘(三个单引号’‘’‘’')表示。如下所示:
102 2
Python之变量命名、运算符和面向对象

热门文章

最新文章