首页 > 编程知识 正文

python中类和对象的定义,python 对象属性

时间:2023-05-03 11:11:08 阅读:191092 作者:3438

混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解 前言一、类、对象、方法、函数和属性的区别和理解二、一个类的简单案例和对各种概念的理解三、总结

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

前言

相信很多刚刚初学 python 的朋友几乎都会被类、对象、方法、函数和属性等概念搞得云里雾里,如果没有人点播,其实理解这些概念还是会有些困难的,下面笔者把自己对这几个概念的理解分享给大家,希望对初学者有所帮助!请仔细看完,多看几遍应该可以看懂!

一、类、对象、方法、函数和属性的区别和理解 类: 采用 Class 作为关键字进行定义的代码块,表示的是一种类别对象: 实例化之后的类,对类中的形参进行了赋值,赋予其真正的含义或数值方法: 使用 def 作为关键词,定义在类内的函数函数: 使用 def 作为关键词,但是没有在类内进行定义,即 定义在类外属性: 类内的称呼,其实就是类内的变量,同一个类内的不同方法内的变量都是这个类的属性,也就是这个类的变量

下面这些是重点,请仔细看,多看几遍,只要你能看懂下面这句话,也就理解了这些混淆概念的区别了!

主要区别【定义和使用的位置】:
函数方法都是函数,定义在类内叫做方法,定义在类外或者单独使用叫做函数
属性变量其实都是变量,定义在类内叫做属性,定义在类外或者单独使用叫做变量

就像数学中的集合,也像一个大的函数,只不过这个函数里面有很多小的函数(这些小函数就是类内的方法),是一个抽象的概念,类只有实例化之后才具有意义,而实例化的类叫做对象,这里就变成了一个具体的实物。

二、一个类的简单案例和对各种概念的理解

为了更好的帮助大家进行理解,下面我们通过创建一个简单的例子来对其进行解释,具体如下:

#!/usr/忧心的芹菜/python# -*- coding: utf-8 -*-""" PyQt5 tutorial Zephyr Hou on 2020-07-21"""class Person: num=1 # 类的属性,使用前需要对其进行声明,否则会报错 print("您实例化了Person类,初始化的num=",num) def setName(self,name): self.name=name # 第一个内部是类内部的属性 def getName(self): return self.name def count(self): self.num+=1 # 使用之前已经对其进行了声明

解释:
首先,我们创建了一个 ,而这个类的名字叫做 Person,然后在这个 Person代码块 下,定义了 setNamegetNamecount 三个函数,因为定义的这三个函数在代码块内,所有我们称之为 Person类三个方法(分别是:setName方法、 getName 方法和 count 方法 )

而对于 setName 方法下面的 变量name, count方法下面的变量num ,我们都可以称之为 类 Person 下面的属性,而类在进行使用时,我们需要对其进行实例化,具体实例化的例子如下:

#!/usr/忧心的芹菜/python# -*- coding: utf-8 -*-""" PyQt5 tutorial Zephyr Hou on 2020-07-21"""# Person类的实例化p=Person() # 调用setName和getName方法p.setName("小猴")print(p.getName())# 不调用的时候,查看count方法的属num性print("num="+str(p.num))# 调用count方法时,查看count方法的属num性p.count()print("num="+str(p.num))# 再次调用count方法时,查看count方法的属num性p.count()print("num="+str(p.num))

通过上面的代码对Person进行类的实例化,在对其进行实例化之后,具体运行效果如下:

通过结果分析可知,当我们对类进行实例化之后,就可以调用类内的各种方法和属性,具体情况如下:

当我们不调用count方法时,可以发现其下面的num属性值和初始化的num值保持一致,num=1保持不变;当我们首先调用count方法时,然后再查看count方法下的num属性时,其值就发生了改变,此时有num=2;当我们第二次调用count方法时,我们可以发现其下面的num属性值其实时是将上次调用之后的运算结果num=2作为初始值进行了运算,得到了此次的运算结果。

这说明当类被实例化之后,类内的代码会被执行,但是其内部的方法在没有被调用之前不会被执行,方法中的属性也不会发生改变,而当方法被调用之后,方法内部的属性值也会发生相应的改变,改变之后的属性值会传递到整个类内,当再次进行调用该类的方法时,其属性的初始值是上次运算之后的属性值结果。

三、总结

我们对 进行定义好之后,在使用之前应该注意以下几点

类在使用之前必须进行实例化实例化一个类之后,如果在方法外写的代码(如:属性值)会被直接运行,方法内部的代码(属性)只有在调用的时候才会被执行类中写的变量名称,自动会被认为是类的属性,这个属性可以被该类的方法调用类中的属性(变量)在使用前需要对其进行声明,否则容易出现错误

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。