面对对象和面对过程

目录

面向过程

面向对象

对象常用的方法

__Init__方法

self

魔法方法:

__str__方法

__new__方法

__self__

析构对象

面向对象三大特征:封装、继承、多态。

类和实例


面向过程

面向过程(关注过程)-根据问题拆分解决的步骤,即业务逻辑从上到下写代码。

函数式:把某种功能代码封装到函数中,日后的无需重复编写,仅调用即可;

优点:面向过程适合做小项目。特点:它关注怎么做。

类方法的第一个参数cls,而实例方法的第一个参数是self。

面向对象

面向对象编程oop[object oriented programming](关注设计思路):把数据和函数绑定在一起,进行封装,更快速开发程序,减少重复代码的重写的过程。优点:面向对象适合使用在更大的项目。特点:它关注谁来做。

类和对象:
类和对象就是面向对象的编程语言的重要的概念。类是具有一组相同或相似的特征【属性】和行为【方法】一系列的【多个】对象。在函数实现一些功能。它相当是制汽车的图纸。类组成部分:类名称:类名;类属性:一组数据;类方法:允许对进行操作的方法。类的抽象具有相同或相似的属性和行为的对象的集合,可以抽象出一个类。类结构:类名(大驼峰方式命名)、属性、方法。 

对象常用的方法

对象是根据类创建实例,是实实在在的东西。它相当是根据图纸做出的汽车。格式:对象名=类名()
实例方法与属性:
实例方法是使用def定义实例方法,存在*类方法*必须包含参数self,且为第一个参数。【名字标识可以是其他的名字,但这个位置必须被占用】。实例方法归于类的实例所有。
属性:定义在类内部的定义的变量【类属性】,属性定义在方法里面使用的【类似self.变量名】引用的属性称为【实例属性】。

__Init__方法

__Init__方法初始化方法,实例化对象的时候自动调用,完成一些初始化的设置。语法:使用双划线包起来【魔术方法】。特点:它是初始化的方法,用定义实例属性和初始化数据,在创建对象自动调用;利用传参的机制可以让我们的功能更加方便;在创建对象的时候默认调用。__init__传参:一般默认1参数 。

self


Self和对象指向同一内存的地址,它是对象的本身。传参:self是对象本身。当某个对象被调用的时候,解释器就会把这个对象作为第一个参数传递给self,开发者只要在传递后面的参数即可。特点:self只有在定义类方法的例方法才有意义,在调用的是不必传入相应的参数,而有解释器自动去指向;self的名字可以更改,可以定义其他的名字,只是默认为self;self指的是一类的实例对象的本身,相当于java中this。


魔法方法:


魔术方法是在内置好的特定的方法,方法名是“__xx__”,在特定的操作的自动被调用。常用的魔术方法:__init__:初始化一个类,在创建的实例对象的为其赋值使用;__str__:在创建的对象转换为字符串str(对象)测试时候,打印对象的信息,类似于一串id的地址的信息 ;__new__:创建并返回一个实例对象,调用一次,就会得到一个对象;__class__:获取已知的对象的类(对象__class__);__del__:对象在程序运行结束的进行的对象的销毁的时候调用这个方法,释放资源···

__str__方法


__str__方法:/打印对象 ,自定义对象, 是内容的格式/。

__new__方法


__new__/创建对象实例方法 ,每调用一次, 就会生成一个新对象 cls就是class的缩写/。特点:必须要有返回 cls 代表该实例类,否则对象创建不成功,此参数实例化由python自动提供;__new__函数执行要早于__init__函数。

__self__


__self__做数据属性初始化工作,也可以是实例构造的方法,接受实例self和对其构造。

 

析构对象

当一个对象被删除或销毁的时候,python默认调用一个方法,这是方法叫__del__方法(魔法方法,或是析构方法)。

特点:程序结束的时候,自动调用__del__方法;当在某个作用域下面 没有被使用【引用】的情况 解析器会自动调用此函数 来释放内存空间;也可以手动来删除指定的对象,使用关键字del来删除某个对象;主要运用在操作对象的释放,一旦释放对象,它再也不能使用。

面向对象三大特征:封装、继承、多态。


封装:指的是把内容封装到某个地方,便于后面的使用;必须的注意点:把内容封装到某个地方;从另外一个地方去调用被封装的内容;对于封装来说,其实使用初始化构造的方法将内容封装到对象中。或是self来获取被封装的内容。

单继承:和现实生活的继承是一样的,就是子可以继承父内容【属性和行为】(爸有的儿子有,儿子有的爸不一定有)。面向对象的继承来说,就是将多个类的共有的方法或属性提取到父类,子类的需要继承父类的行为或属性即可。作用:极大的提高代码的效率,减少代码的重复的编写,极大的极简层级关系,便于拓展。
多继承:其实和现实中的干爹一样含义,一个子集可以有多个干爹来认。多继承出现同名的时候,它先去按照继承的从左到右的顺序来查找方法,找到就调用,没有找到就结束报错。如果需要查看调用的顺序,使用__mor__方法,它的功能是查询执行的顺序,就是说它可以打印出调用继承顺序。间接继承:父类关联到其他父类,一层层传递下来,子类相当于拥有它继承的父类所有的属性和方法,继承的次数一般的三级以内。重写:子类中,有一个方法和父类的方法是同名,那子类就会覆盖父类。为什么需要重写 ?父类方法不满足子类的需要,它就可以重写或完善父类的方法。

多态:它就是多种状态多种形状,就是同一种的行为,对于不同的子类【对象】有不同的行为表现。

前提:1. 继承必须存在继承关系;2. 重写:子类重写父类的方法。

作用:增加程序的灵活性、拓展性。鸭子类型:它是一种动态的类型,它有效的代码是当前方法和属性的集合决定的,它不关注对象的本身,而是它如何使用。

类和实例


类属性:类 属性它是类对象所拥有的属性,它可以被类对象和实例对象共同访问使用;实例对象的类对象指针是同一类对象,实例属性在每个实例中独自有一份,而类属性是所有的实例兑现的共有一份。
实例属性:实例对象所拥有的属性,只能通过实例对象访问。

类方法和静态方法
1. 类方法是使用@classmethod把实例方法转为类方法。类方法 用classmethon来进行修饰。类方法的第一个参数是类对象cls进而引用类对象的属性和方法
2. 实例方法的第一个参数必须是self,通过这个self可以引用类属性或方法。如果出现实例属性和类属性的情况下,实例属性优先级更高。

3. 静态方法@staticmethod表示静态方法,它不需要任何参数,通过类对象或实例对象去引用即可。
4. 一般情况下,我们不会通过实例对象去访问静态方法。为什么使用静态方法呢?由于静态方法存放逻辑性的代码,本身和类以及实力对象没有交互,不好涉及到累中方法和属性操作。数据资源能得到有效的充分的利用。如何使用:静态方法不需要其他的参数,它必须通过类对象来引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值