类的方法和函数的区别,请解释一下什么是函数什么是类和对象
面向对象(Object oriented Programming,OOP)编程
的思路主要是针对大型软件设计。面向对象编程将与数据和操作数据相关的方法封装成对象,代码和数据的组织方式更贴近人的思维,使得程序更具可扩展性和可读性,从而大大提高了编程的效率。Python完全采用面向对象的思想,是真正的面向对象编程语言,完全支持面向对象的基本功能,如继承、多态、封装等。
在Python中,一切都是对象。比如数据类型,函数等。都是对象。
Python 支持面向过程、面向对象、函数式编程等多种编程范式。
面向对象和面向过程的区别:相似之处:都是解决问题的思维方式和代码组织方式。
差异:
面向过程(Procedure Oriented)思维:
面向过程编程更注重“程序的逻辑流程”,是一种“执行者”思维,适合写小规模的程序。
面向对象(Object Oriented)思维:
面向对象更注重“软件中对象之间的关系”,更符合人的思维模式。是一种“设计师”思维,适合写大型程序。面向对象可以帮助我们从宏观的角度把握和分析整个系统。但是具体的微操作(也就是一次一个方法)还是需要流程化的思维。面向过程和面向对象是相辅相成的,面向对象离不开面向过程。
面向对象思考方式
遇到复杂问题时,先从问题中找出名词(面向过程,动词较多),然后确定这些名词中哪些可以作为类,再根据问题的要求所确定的类的属性和方法来确定类之间的关系。
对象的原点:简单数据:例如,2.0,3,5.
数组:相同类型的数据放在一起。
结构:将许多不同类型的数组存储在一起。
对象:将不同类型的数据和方法存储在一起。
类:一个类将行为和状态打包在一起,即对象是一个类的具体实体,一般称为“类的实例”。
当从一个类创建对象时,每个对象将共享该类的行为(在该类中定义的方法),但是它将有自己的类。
性值(未共享状态)。更具体地说:“方法代码共享,但属性数据不共享”。
Python中定义类的语法:
类名:
类似物体
要点如下:
类名必须符合“标识符”的规则;一般首字母大写,多个单词用“驼峰原理”。在类中,我们可以定义属性和方法。属性用于描述数据,方法(即函数)用于描述与这些数据相关的操作。
【示例1】
定义一个动物类,实例化cat,打印出它发出的声音。ClassAnimal (): def _ _ init _ _ (self,name,sound): #构造函数的第一个参数必须是self self.name=name #构造属性self。sound=sounddef print _ sound (self)该类:#实例方法print({0})发出了“{1: 4}”。格式(自我。名字,自我。sound)) cat=Animal (zzdtn ,喵)#实例类Animal的一个对象cat自动调用__init__()方法cat.print_sound() #cat调用自己的方法运行结果:zzdtn发出喵的声音。
__init__() 和 __new__()方法
类是抽象的,也称之为“对象的模板”。
我们需要通过类的模板创建类的实例对象,才能使用类定义的函数。而在Python中,Python对象包括几个部分:
所以我们需要定义构造函数
__init__()
方法,这个方法会把对象的属性赋予我们定义的对象。方法用于初始化实例对象,即创建对象后,初始化当前对象的相关属性,没有返回值。
__init__()的要点如下:
名称是固定的,必须是:
init
()。第一个参数是固定的,必须是:self。Self是指刚刚创建的实例对象。构造函数通常用于初始化实例对象的实例属性。比如例1,实例属性初始化:name和sound通过“类名(参数列表)”调用构造函数。调用后,创建的对象返回到相应的变量。例如:cat=animal (ZZ DTN ,喵喵喵)__init __()方法:初始化创建的对象。初始化是指:“给实例属性赋值”__new __()方法:用于创建对象,但我们一般不需要重新定义这个方法。如果我们不定义__init__方法,系统将提供一个默认的__init__方法。如果我们用参数定义__init__方法,系统将不会创建默认的__init__方法。注:
Python中的Self相当于C中的self指针,JAVA和C#中的这个关键字。在Python中,self必须是构造函数的第一个参数,其名称可以任意修改。但总的来说,遵循约定就是所谓的自我。属性和实例方法实例属性实例属性是从属于实例对象的属性,也称为“实例变量”。他的用途有以下几点:
实例通常由以下代码在__init__()方法中定义:
自我。实例属性名=初始值在这个类的其他实例方法中,访问也是通过self:
自我。实例属性名称创建实例对象后,通过实例对象访问它:
Obj01=class name () #创建一个对象并调用__init__()初始化属性。
Obj01。实例属性名称=值#您可以为现有属性赋值,也可以添加新的属性实例方法。实例方法是从属于实例对象的方法。实例的定义格式如下:
定义方法名(自身,[参数列表]):
功能体
该方法的调用格式如下:
对象.方法名([实参列表])
关键点:
定义实例方法时,第一个参数必须是self。和以前一样,self指的是当前实例对象。调用实例方法时,不需要也不能给self传递参数。self解释器自动传递的函数和方法的区别是用来完成一个函数的语句块,本质上是一样的。当调用方法时,它是通过对象调用的。方法从属于特定的实例对象,但是普通的函数没有这个特性。直观上,方法定义时需要传递self,而函数没有。
实例对象的方法调用本质:
类中的其他操作:dir(obj)可以获取对象obj的所有属性和方法。__dict__对象的属性字典传递空语句,相当于一个占位符。Isinstance (object,type)确定“对象”是否为“指定类型”。