混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解
欢迎学习交流!
邮箱: z…@1…6.com
网站:
前言
相信很多刚刚初学 python 的朋友几乎都会被类、对象、方法、函数和属性等概念搞得云里雾里,如果没有人点播,其实理解这些概念还是会有些困难的,下面笔者把自己对这几个概念的理解分享给大家,希望对初学者有所帮助!请仔细看完,多看几遍应该可以看懂!
一、类、对象、方法、函数和属性的区别和理解
下面这些是重点,请仔细看,多看几遍,只要你能看懂下面这句话,也就理解了这些混淆概念的区别了!
主要区别【定义和使用的位置】:
函数和方法都是函数,定义在类内叫做方法,定义在类外或者单独使用叫做函数;
属性和变量其实都是变量,定义在类内叫做属性,定义在类外或者单独使用叫做变量;
类 就像数学中的集合,也像一个大的函数,只不过这个函数里面有很多小的函数(这些小函数就是类内的方法),是一个抽象的概念,类只有实例化之后才具有意义,而实例化的类叫做对象,这里就变成了一个具体的实物。
二、一个类的简单案例和对各种概念的理解
为了更好的帮助大家进行理解,下面我们通过创建一个简单的例子来对其进行解释,具体如下:
#!/usr/bin/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代码块 下,定义了 setName、 getName 和 count 三个函数,因为定义的这三个函数在代码块内,所有我们称之为 Person类 的 三个方法(分别是:setName方法、 getName 方法和 count 方法 )
而对于 setName 方法下面的 变量name, count方法下面的变量num ,我们都可以称之为 类 Person 下面的属性,而类在进行使用时,我们需要对其进行实例化,具体实例化的例子如下:
#!/usr/bin/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进行类的实例化,在对其进行实例化之后,具体运行效果如下:
通过结果分析可知,当我们对类进行实例化之后,就可以调用类内的各种方法和属性,具体情况如下:
这说明当类被实例化之后,类内的代码会被执行,但是其内部的方法在没有被调用之前不会被执行,方法中的属性也不会发生改变,而当方法被调用之后,方法内部的属性值也会发生相应的改变,改变之后的属性值会传递到整个类内,当再次进行调用该类的方法时,其属性的初始值是上次运算之后的属性值结果。
三、总结
我们对 类 进行定义好之后,在使用之前应该注意以下几点: