python学习笔记3-对象
2021/11/14 22:12:23
本文主要是介绍python学习笔记3-对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
面对对象
1.类与对象
python中一切皆对象
创建类
class Student: #每个单词首字母大写 类对象 native_space='江苏' # 类属性 def __init__(self,name,age): self.name = name # 局部变量name赋值给实例属性 self.age = age def eat(self): # 实例方法 pass @staticmethod def sm(): # 静态方法,只能用Student.sm()调用 pass @classmethod def cm(cls): # 类方法,只能用Student.cm()调用 pass
创建对象
类的实例化,实例名=类名()
stu1 = Student('朱嘉骏',20) # 实例对象
动态绑定属性和方法
只想给某个实例化对象添加某个属性和方法,其他对象不受影响。
stu1.gender='男' # 直接加属性 def show(): print('定义在类之外的函数') stu1.show = show # 直接加类外的方法
2.面向对象的三大特征
-
封装
提高程序安全性,类是对属性和方法的封装。隔离了复杂度。
在方法或属性前面加两个_,这个属性只能在类内部实用,不希望被其他实例化对象使用(但是可提高dir(stu)查找到该方法并调用)。
-
继承
如果没有继承类,则默认继承object类。
python支持多继承,
定义子类时候必须在其构造函数调用父类的构造函数
class Person(): # 默认继承object类 def __init__(self, name, age): self.name = name self.age = age def info(self): print('姓名:{0},年龄:{1}'.format(self.name, self.age)) class Student(Person): def __init__(self, name, age, score): super().__init__(name, age)# 调用父类的构造函数 self.score = score
方法重写
子类要输出自己独有的,父类不能提供,子类要重写方法。
class Student(Person): def __init__(self, name, age, score): super().__init__(name, age)# 调用父类的构造函数 self.score = score def info(self): # 重写子类方法 super().info() # 如果还要用父类的方法 print(self.score)# 自己添改的内容
object类
__str__方法,用于输出对象的描述,直接print(实例对象)默认调用该方法,所以经常对__str__方法重写,用于返回对象的描述
__dir__方法,输出对象的所有属性,内置函数dir()亦可
-
多态
可拓展性和可维护性
静态语言(java)多态,明确继承关系、方法重写、父类引用指向子类对象
动态语言(python)的多态崇尚鸭子类型
鸭子类型:不关心对象的父类是谁,只关心对象的属性方法。
-
特殊属性和方法
特殊属性:__dict__实例对象的属性字典,类对象的方法字典;
__class__()对象所属的类,__bases__()父类,__base__()最近的父类,__mro__()类的层次结构,__subclasses__()子类的列表
-
方法
特殊方法:__add__是+的底层方法,可以通过改写子类的方法来改变该类实例对象的 **+**功能
__len__通过重写方法,让内置函数len()的参数可以是自定义类型
__new__创建对象
__init__对创建的对象初始化##########################课程117,没学完
-
类的浅拷贝
浅拷贝,python没有特殊说明都是浅拷贝
对象包含的子对象内容不拷贝,因此源对象和拷贝对象引用同一个子对象####没学完
-
深拷贝
递归拷贝对象中包含的子对象
这篇关于python学习笔记3-对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04Python外包有哪些常见的主要库-icode9专业技术文章分享
- 2024-10-02基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)
- 2024-10-01怎么用python搭建一个系统-icode9专业技术文章分享
- 2024-09-30Python基础入门教程
- 2024-09-30获取参数学习:Python中的基础教程
- 2024-09-30Python编程基础详解
- 2024-09-29点击加载学习:Python编程基础教程
- 2024-09-29数据科学五大Python前端库:第二部分
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础