首页 > 其他分享 >周结之面向对象

周结之面向对象

时间:2022-11-06 18:57:17浏览次数:52  
标签:__ 面向对象 对象 周结 self 继承 init

周结

目录

  • 编程思想
  • 面向对象之类与对象
  • 静态方法
  • 面向对象之继承
  • 继承的本质
  • 名字的查找顺序
  • 经典类与新式类
  • 派生方法

编程思想

​ 面向过程编程:都需要列举每一步流程 并且随着步骤的深入 问题的解决越来越简单化
​ 面向对象编程:类似一个造物主的感觉 只需要造出一个个对象 至于该对象将来会如何发展跟程序员没有关系 也无法控制
PS:两种思想没有优劣之分 需要结合实际需求而定 两种思想是彼此交融的 只不过占比不同

面向对象之类与对象

对象:数据与功能的结合体 对象才是核心
​ 类:多个对象相同数据和功能的结合体 类主要是为了节省代码
​ 类与对象的关系:类包含一系列对象 对象属于某个类
​ 在程序中如果想要产生对象就必须先要定义出类
​ 在面向对象编程时 第一步就思考余姚什样的对象 对象具备什么样的特征和行为从而根据这些信息总结出需 要的类型

类与对象的创建

python中一定要有类才能借助于类产生对象
1.类的语法格式:
class 类名:
    '''代码注释'''
    对象公共的数据
    对象公共的功能
class是定义类的关键字
类名的命名与变量名几乎是一致的 但首字母推荐是大写用于区分
数据:变量名与数据的绑定 功能(函数)其实就是函数
2.类的定义与调用
类在定义阶段就会执行类体代码 但是属于类局部名称空间 外界无法直接调用
'''在面向对象中 类和对象访问数据或者功能 统一采用句点符'''
'''类名加括号就会产生对象 并且每一次都会产生全新的的对象(我将类产生对象的过程叫做对象的实例化)'''
'''数据和功能也可以统称为属性  数据>>>属性名  功能>>>方法'''

对象独有的数据与功能

# 独有的数据
__init__:初始化方法__init__
当时实例化对象时会自动执行init方法 会自动将对象作为第一个参数传入 参数名称
'''
__init__ 执行流程:
1.类加括号产生一个对象
2.将类括号内的参数和空对象交给__init__执行空对象作为第一个参数
3.该方法会给独有的数据并自动返回对象本身
'''
# 独有的功能
定义在类中的功能 默认就是绑定给对象使用的 谁来调谁就是主人公

动静态方法

1.绑定给对象的方法
类中直接定义函数 默认绑定给对象 对象调用第一个参数就是对象本身
2.绑定给类的方法
被@classmethod修饰的函数默认绑定给类的 类的调用第一个参数就是类自身 对象也可以调用并且将产生该对象的类当做第一个数传入
3.静态方法 通过被@staticmethod修饰的函数 无论是函数还是对象本身 都必须自己手动传参

面向对象之继承的概念

​ 面向对象的三大特征:
​ 封装 继承 多态
​ 三者中继承最为核心
在编程世界中类A继承类B就拥有了类B所有的数据和方法使用权
在定义类的时候后面加括号填写其他类名 编号继承其他类
在python中支持多继承 括号内填写多个类名彼此逗号隔开
继承了其他类的类称之为子类、派生类
被我们继承的类称之为父类、基类、超类

继承的本质

对象:数据与功能的结合体
类(子类):多个相同数据和功能的结合体
父类:多个类相同数据和功能的结合体
继承本质应分两部分
抽象:将多个类相同的东西抽出去形成一个新的类
继承:将多个类继承刚刚抽取出来的类

名字的查找顺序

[分不继承与单继承、多继承情况下的名字查找顺序

  1. 不继承
    对象自身 >>> 产生对象的类
  2. 单继承
    对象自身 >>> 产生对象的类 >>> 父类
  3. 多继承
    对象自身 >>> 产生对象的类 >>> 父类(从左往右)
    分:菱形继承、非菱形继承
    菱形:广度优先(最后才会找闭环的定点)
    非菱形:深度优先(从左往右每一条道走完为止)
    PS:mro()方法点类名可以直接获取名字的查找顺序]()

经典类与新式类

经典类:不继承object或者其子类的类
新式类:继承object或者其子类的类
	在python2中有经典类和新式类
    在python3中只有新式类(所有类默认都继承object)
PS:在定义类的时候 如果没有其他明确的父类 也可能习惯写object来实现兼容

派生方法

子类基于父类某个方法做了扩展
class Peron:
    school_name = '北京大学'
    def __init__(self, name, age, hobby):
        self.name = name
        self.age = age
        self.hobby = hobby
    def func(self):
        print(self.name)
class Student(Person):
    def __init__(self, name, age, hobby, level):
    	super().__init__(self, name, age, hobby) # 子类调用父类的方法
        self.level = level
        
 stu1 = Student('jason', 18, 'read', 99)

标签:__,面向对象,对象,周结,self,继承,init
From: https://www.cnblogs.com/xiao-fu-zi/p/16863356.html

相关文章

  • day28面向对象(2)
    动静态方法在类中定义的函数有多种特性classStudent:school_name='摆烂大学'#1.类中直接定义函数默认绑定给对象类调用有几个参数传几个对象调用第一......
  • 本周回顾-面向对象
    编程思想1.面向过程编程 过程即流程面向过程就是按照固定的流程解决问题 eg:截止ATM为止使用的几乎都是面向过程编程注册功能登录功能转账功能......
  • Python周总结——面向对象
    Python周总结——面向对象编程思想'''面对过程编程: 过程即流程,面向过程就是按照固定的流程解决问题 需要列举出每一步的流程,并且随着步骤的深入,问题的解决也越来越简......
  • 面向对象、继承
    动静态方法classStudent:school_name='摆烂大学'deffunc(self):print('我看谁最能摆烂')@classmethod#被@classmethod修饰的函数默认绑定给类......
  • 面向对象汇总
    本周内容概要目录本周内容概要本周内容详情面向对象前戏之人狗大战两种编程思想类与对象1.类与对象的概念2.类与对象创建2.1类的语法结构2.2类的定义与调用2.3对象独有的......
  • 面向对象周总结
    目录面向对象周总结人狗大战面向对象核心思路编程思想面向对象类与对象类与对象的创建对象独有的数据对象独有的功能动静态方法面向对象继承的概念继承的本质名字的查找顺......
  • JAVA语言学习-面向对象(1)
    类与对象类类是JAVA语言中重要的复合型数据类型()。类的实现包括两个部分:成员变量和成员方法("方法"可以看作是C语言中的函数)类的声明要使用类,首先得对其声明。声明......
  • C++《面向对象程序设计课程设计》
    C++《面向对象程序设计课程设计》《面向对象程序设计课程设计》课程说明适用专业:计算机科学与技术课程周数:5周一、根据计算机科学与技术专业人才培养方案制订。(一)课程......
  • 首选线程池,而不是多线程; 创建线程的方法; 存储过程和for循环插入数据; String字符串一般
    首选线程池,而不是多线程首选线程池,而不是多线程/**corePoolSize:线程长期为维持线程数核心线程数,常用线程数maximumPoolSize:线程数的上限,最大线程数keepAliveTime:超过线......
  • python之路之 面向对象动静态方法、继承、派生
    昨日内容回顾人狗大战1.直接使用字典表示人和狗 p1={} p2={} p3={} p4={}2.封装产生人和狗的函数 defcrreate_person():passdefcreate_dog():p......