🧠我通过查资料,自己尝试对这个实例方法哇,类方法哇,静态方法哇,终于得到如下理解 : 宝子们可以参考着理解, 看了这么对csdn对类方法, 静态方法, 实例方法的讲解, 我觉得我的这个理解方法绝对是大多刚入门的python学习小伙伴最容易接受和理解的, 我认为希望我的这个总结可以帮到你们.🧠
🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗🤗
首先我们吧一个类里面会出现的一些方法属性名称给咱们标出来,方便大家easy跟上下面的知识理解(我在下面都会用这些名称给大家讲解):
class Aaa: >> 类名
xxx = xxx >> 类属性
def xxx(self): >>实例方法
xxx = xxx >>实例属性
@classmethod >>类方法
def xxx(cls):
xxx = xxx >>可以定义更改类属性
@staticmethod >>静态方法
def xxx():
xxx = Aaa() >>实例对象(可以创建多个)
xxx.xxx >>实例化
Aaa.xxx() >>类对象
<若有误欢迎评论区讨论>
😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁
方法名 | 实例方法 参数默认为self | 类方法 参数默认为cls | 静态方法 参数可以任意取
|
各方法之间的调用关系 | 可以调用类方法,静态方法,实例方法(子子类) | 可以调用静态方法 <不能调用实例方法> | 可以调用类方法 |
和类属性的关系 | 可以修改和创建类的属性 | 可以修改类的属性 | 不能创建修改类的属性 |
数量关系 | 可以创建多个实例方法 | 可以创建多个类方法 | 可以创建多个静态方法 |
运用对象 | 可以通过创建实例对象来调用实例方法,即我们上面提到的实例化 | 可以通过创建类对象直接调用类方法 | 可以通过创建 (类名 . 静态方法) 来直接调用我们的静态方法(和我们的类对象差不多,但是我暂时还不知道怎么称呼🤣) |
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
因为我们的python语言是非常灵活的为了方便我们理解
特别是类里面方法之间一些调用关系也是特别的灵活,对于小白来说有点难一下子全部掌握,所以我们在创建类的时候,想各个方法之间的相互调用我们只需要牢记什么方法之间不能调用就已经可以避免一下问题,让我们运用类的时候不在那么迷糊😊😊
等等宝子们你们以为了解以上这些就可以实现我们以为了的了代码效果了嘛!😜
请听我再bb几句给宝子们强化理解一下,让宝子们实操不迷茫✌✌
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
要实现我们类方法修改类属性的效果,这个
类方法就必须要执行!
要执行!
要执行!
这就是很多小白很迷惑的地方
接下来让我们展示代码例子,帮助大家理解
我定义了一个数字列表通过对数字的加减乘的运算,来向大家侧面展示代码的运行效果
(这个代码和上面介绍名称的代码差不多位置对应)
class Number:
num1 = 1
num2 = 2
num3 = 3
def add_num(self):
return self.subtraction(), self.num3
@classmethod
def subtraction(cls):
cls.num5 = 5
return cls.num2 - cls.num1
@staticmethod
def multiplicine(cls):
return cls.num3 * cls.num2
def test1(self):
self.num4 = 4
return self.num4
def test2(self):
return self.num5
try1 = Number()
print(try1.test1())
>>> 4
#在这里我们就通过了实例方法来创建一个num4的类属性
#注意我们在我们在类方法里定义了一个新的类属性 cls.num5 = 5
#但是我们通过test2 测试发现:
print(try1.test2())
>>> AttributeError: 'Number' object has no attribute 'num5'. Did you mean: 'num1'?
#报错了 类属性里面没有num5 这个属性
#这是为什么呢?
=========================================================================================
🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁 🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁 🎁🎁
🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁 🎁🎁🎁🎁🎁🎁🎁🎁🎁🎁 🎁🎁
>>> 精彩继续:
===========================================================================================
#因为:
#这就是为什么我之前重复三遍的地方
#要让我们的类方法成功添加或修改我们的类属性,就必须执行一次
现在我们有两种办法让这个类方法里对类属性添加成功(拿出主要代码)
class Number:
num1 = 1
num2 = 2
num3 = 3
def add_num(self):
return self.subtraction(), self.num5
@classmethod
def subtraction(cls):
cls.num5 = 5
return cls.num2 - cls.num1
1.---------------------------------------------------------------------------------------
try2 = Number()
print(try2.add_num())
>>> (1, 5)
# 这里我们只需要用实例方法调用一下我们的类方法,类方法就可以将我们的新的类属性(num5 = 5)成功添加j
2.---------------------------------------------------------------------------------------
try3 = Number()
print(try3.subtraction())
print(try3.num5)
>>> 1
>>> 5
#就是先执行类方法 通过打印 print(try3.num5) 结果为5 说明成功给类属性添加新属性
👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏
👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏
静态方法
静态方法说简单点就是类里面的内置函数 ,防止我们在类外面创建的函数在类里面调用时和别的平行类在外面创建的相同名称的函数产生覆盖的情况(简单点理解就是类的内置函数,既不用传参数,还可以产生一定的效果)
以上就是我对这些方法的理解,如果对对宝子们理解这块知识点有一丢丢帮助,别忘了给波波涛点一个赞,表示支持。
欢迎加入QQ交流群讨论:463373916