宝应123网站建设网,腾讯云服务器安装宝塔教程,上海个体工商户如何注册,北京好的网站建设目录
前言#xff1a;
面向过程和面向对象
类和对象
Python中类的定义
#xff08;1#xff09;类的定义形式
#xff08;2#xff09;深层剖析类对象 前言#xff1a; 感谢各位的一路陪伴#xff0c;我学习Python也有一个月了#xff0c;在这一个月里我收获满满…
目录
前言
面向过程和面向对象
类和对象
Python中类的定义
1类的定义形式
2深层剖析类对象 前言 感谢各位的一路陪伴我学习Python也有一个月了在这一个月里我收获满满学到了很多知识每当我学会了一个新的知识点我会发表一篇博客来表达自己想法和见解我也写了一篇Python基础学习的专栏https://blog.csdn.net/m0_73633088/category_12186491.html 这一阶段的学习也基本告一段落了而今天我将会开始学习Python中的高级语法开启Python进阶的新征程路途漫漫道路艰险而我一往无前。 面向过程和面向对象 编程语言一般分为两种编程范式一种是面向过程另一种是面向对象这两种范式是不相同的语言方法侧重点是完全不相同的。 面向过程在前面我们学习的Python基础语法以及C语言这些都是面向过程的语法其核心在于过程二字过程指的是解决问题的步骤编程的时候先把解决问题的步骤分析出来然后用函数把这些步骤实现在一步一步的具体步骤中再按照顺序调用函数适合简单任务不需要过多协作。 面向对象核心就是对象二字, 对象是有属性和方法组成的编程的时候首先思考的怎么设计这个事物比如思考造车我们会思考车怎么设计而不是“怎么按照步骤造车的问题”找轮胎厂制造轮胎发动机厂制造发动机发现同时造车的步骤组成在一起就完成造车大大提高了效率。而面向对象即是Python语言的精髓所在。 那这里就有人会问了这两种编程范式肯定有高低之分的吧应该是面向对象比面向过程更加高级。注意力编程范式是没有高低之分的就好比如文化这一方面为什么总是有些人崇洋媚外呢难道中华文化就低人一等了中国汉服不好看吗为什么非要去穿和服呢拜托中华文化可是有5000年的历史啊源远流长博大精深足以傲视全世界这里是就是想说明一下编程范式跟文化是一样的实际上没有什么高低之分只是在不同情况下的适应性不同千万不要有什么偏见。 类和对象 类这里就说到类了好那什么是类其实很简单理解比如说一个物种或者说某一类人顾名思义‘类’是表示某一种事物具有某一共同特征这就能被分为一类 对象对象是表示这个类的例子是具体的实例具体存在的 给个例子吧比如说狗这一类可以分为好多个品种就以哈士奇和金毛为对象哈士奇具有什么属性呢这都不用我说了二哈名字都摆在那呢金毛又有什么属性呢亲人嘛性格温顺体贴他人这些都是这两个对象特有的属性而它们共有的属性就是会狗叫、会做坏事、会摇尾巴……等等。很好理解吧 Python中类的定义 前面我们学过字符串的类别是str整形的类是int、浮点型的类是float……等等这些都是Python中定义好了的类我们可以通过这些类去调用类里面的属性和方法那这里我来教你们怎么去定义类以及怎么去理解类 1类的定义形式 前面我们学过了函数的定义就是def 函数名字: 下面就是函数体了其实类也是相似的用关键字class来定义 #函数的定义
def 函数名(形参):函数体函数名(实参)#类的定义
class 类名:类代码(属性方法) 类的相关规则 类名的定义使用大驼峰命名所有单词首字母大写 定义类之后没有实例对象执行代码类中代码执行 定义在类中的变量称为属性函数称为方 示例1定义和修改类属性
class Dog:namedog #在类中的变量是属性attributeage5
erhaDog() #建立实例化对象
print(type(erha))
#输出结果dog 5
# class __main__.Dog 说明这里是创建了一个Dog类型其中有两个属性name和age这两个类属性是实例化对象共同拥有的属性下面我们建立了一个实质化对象erhaDog() 然后我们就可以输出这个实质化对象的属性其类型就是Dog 类型这里还是很好理解的 class Dog:namedog #在类中的变量是属性attributeage5
erhaDog()
print(erha.name,erha.age)
erha.age3
erha.namegou
print(erha.name,erha.age)
#输出结果
# dog 5
# gou 3 实例化对象的类属性是可以去修改的直接赋值修改就OK了 示例2定义实例方法
1.写法1
class Dog:namedogage5def fun(self):print(这是一直可爱的小狗)
erhaDog()
print(erha.fun())
#输出结果这是一直可爱的小狗
2.写法2:通过类名.方法(实例对象) ---表达
#写法
class Dog:namedogage5def fun(self):print(这只小狗真可爱)
erhaDog()
print(Dog.fun(erha)) #我们可以直接把实例参数传入到self
#输出结果这只小狗真可爱
3. 添加位置参数
class Dog:namedogage5def fun(self,name): #定义参数nameprint(f这是一直可爱的小狗{name})
erhaDog()
print(Dog.fun(erha,happy))
#输出结果这是一直可爱的小狗happy 注意 这里定义了一个实例方法为fun那这里有人就会问这个不就是函数吗不是的在Python中定义在类里面的不叫做函数而是叫做方法而定义在类以外的才叫做函数这里要区分开来。 说明 这是一个实例方法在创建的过程中会自动创建一个self参数这个参数是表示实例对象的本身当我们创建好了一个对象之后可以去调用这个方法以上就是这个方法调用的三种写法 示例3init初始化方法 init初始化方法又叫做实例化方法魔法方法构造方法 该方法在初始化实例对象时会自动调用通常情况用于初始化对象的属性 该方式在实例化对象时会自动调用不需要手动调用 class Dog:animaldogdef __init__(self,name,age): #name和age是表示实例对象的初始化属性也是特定属性self.namename #这里的self.name是自己定义的而后面的name是参数self.ageagedef fun(self):print(这只小狗真可爱)
if __name____main__:erhaDog(Timi,5) #里面的参数必填否则会报错print(erha.animal,erha.name,erha.age)print(erha.__dict__) #查看实例对象erha 的特定属性
#输出结果dog Timi 5
# {name: Timi, age: 5} init 初始化方法是定义并且初始化实例对象的特点属性我们可以去通过__dict__去查看然后返回实例对象属性的键值对。 2深层剖析类对象
class Dog:namedogage5
print(Dog)
erhaDog()
print(id(erha))#输出获取地址
#输出结果class __main__.Dog
# 2931955054960 这里我们可以看出当我们去调用的时候就要加上() 这个跟函数是一样的如果不去调用就会跟第一个输出结果一样输出这个类的类型例如print(int) 这个的输出结果就是class int当我们去调用了这个类之后其实就是已经创建了一个实质化对象这时候计算机会开辟一段内存空间从id() 函数获取的地址就可以看出 再看一个例子
class Dog:namedogage5
erhaDog()
print(id(int))
print(id(Dog))
print(id(erha))
#输出结果140735865654544
# 2504339459136
# 2505947003248 这里我们可以看出其实类本身就是有一个空间地址的而我们去创建一个实例化对象实际上是创建了一个类指针这个对象erha的类指针指向了Dog 类型我们可以去通过这个类指针来访问Dog 类型的属性和方法这也说明了如果我去定义多个实例对象的话那么这些实例对象的类指针都会指向定义的类Dog所以一个类是具有公用功能的。 class Dog:animaldogdef __init__(self,name,age):self.namenameself.ageagedef fun(self,name):print(f这只{name}真可爱)def recurrence(self,age):i1sum1while iage:sum*ii1return sum
if __name____main__:erhaDog(哈士奇,5)Dog.fun(erha,erha.name)print(Dog.recurrence(erha,erha.age))jinmaoDog(金毛,4)Dog.fun(jinmao,jinmao.name)print(Dog.recurrence(jinmao,jinmao.age))
#输出结果这只哈士奇真可爱
# 120
# 这只金毛真可爱
# 24 这里可以看出我建立了两个实例对象其中的方法都是共享的也就说明类指针的强大所在。 好了这一期就到这里了谢谢各位~~~
日常分享壁纸~