python中类方法、静态方法和实例方法的区别(自学笔记)记住三句话(代码实例) |
您所在的位置:网站首页 › 51cnc自学网 › python中类方法、静态方法和实例方法的区别(自学笔记)记住三句话(代码实例) |
首先明白类是什么,通俗点说,类就是一个模板,是面向对象编程代码泛型中,将数据和对数据的操作方法(既函数)打包起来的一种模板,而对象就是模板类的一个实例。通俗点说,类就像一个盒子,将数据属性和函数打包起来扔进去,对象就像是这个盒子的名字,在进行代码编程的时候,我们就负责搭积木,将这些盒子堆在一起,程序就被抽象为一个或多个对象,通过对象之间的交互实现程序的功能,而不是一系列的指令。 面向对象编程(理解)(找的网图,懒得画了,大概就这个意思就行了^-^)一个个盒子就是一个个类,在整个程序中通过对象的交互实现程序的功能,面向对象编程,核心要解决的问题就是:省事(专业点就是代码可读性高,易于编程与更改) 言归正传言归正传 声明一个类的时候,类中的变量分为:类变量和实例变量 类中的方法分为:实例方法,类方法和静态方法 类方法:声明类方法标识符@classmethod 必须使用参数cls 可以访问类变量(只有类方法可以访问类变量),可以通过类名或者实例名来访问 静态方法:声明静态方法标识符@staticmethod 不能访问类变量也不能访问实例变量,可以通过类名或者实例名来访问 实例方法:声明实例方法必须使用参数self,不能访问类变量,只能通过实例名来访问 代码实例: class dogs(): #类变量,只能由类方法访问 dogbook={'黄色':30,'黑色':20,'白色':0} def __init__(self,name,color,weight): self.name=name self.color=color self.weight=weight #定义一个实例方法,声明实例方法必须使用参数self,不能访问类变量,只能通过实例名来访问 def bark(self): print(f"{self.name}叫了起来") #定义类方法,声明类方法必须使用参数cls 可以访问类变量,可以通过类名或者实例名来访问 @classmethod def dog_num(cls): num=0 for v in cls.dogbook.values(): num = num+v return num #定义静态方法,不能访问类变量也不能访问实例变量,可以通过类名或者实例名来访问 @staticmethod def total_weight(dogs): total = 0 for i in dogs: total =total+i.weight return total #类变量只能通过类名来访问,dog_num()是类方法,在类方法中也可以访问类变量print(f"共有{dogs.dog_num()}条狗")#类实例化对象d1和d2d1 =dogs('大黄','黄色',20)#bark()是实例方法,只能通过实例名来访问,不能通过类名来访问d1.bark()d2=dogs('小白','白色',8)#静态方法,不能访问实例变量也不能访问类变量,既可以通过实例名访问,也可以通过类名访问print(f"大黄和小白一共重{dogs.total_weight([d1,d2])}斤")print(f"大黄和小白一共重{d2.total_weight([d1,d2])}斤") 程序输出结果(^-^) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |