1、关于参数的区别
实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self
类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls
静态方法:定义静态方法的时候可以不定义形参
2、关于方法定义时候添加装饰器的区别
实例方法:不需要添加装饰器
类方法:需要添加装饰器 ----> @classmethod
静态方法:需要添加装饰器 ---> @staticmethod
3、调用:
1.实例方法可以通过对象直接调用
2.但是用类名调用的时候,需要创建一个对象,并且在传递参数的时候要将对象传递进去
3.类方法可以通过类名直接调用,也可以通过对象来调用
4.静态方法可以通过类名直接调用,也可以通过对象来调用
4、补充
1.静态方法不可以继承
2.类方法不能访问实例变量,只能访问类变量
class Dog():
age = 3 # 类变量
def __init__(self):
self.name = "XiaoBai" # 实例变量
def run(self): # 实例方法
print("{} years old's {} is running!".format(self.age,self.name))
@classmethod
def eat(cls):
# print(cls.name) # 类方法,不能访问实例变量(属性)
print("XiaoHei is {} years old".format(cls.age)) # 类方法只能访问类变量
@staticmethod
def sleep(name):
# 静态方法与类无关,只能类中的一个功能而已
# 静态方法不能访问类变量和实例变量
print("{} is sleeping".format(name))
d = Dog()
d.run() # 通过实例化对象调用实例方法
Dog.run(d) # 通过类名称调用实例方法,需要在方法中传入实例对象
d.eat() # 通过实例化对象调用类方法
Dog.eat() # 通过类名称调用类方法
d.sleep("XiaoLan") # 通过实例化对象调用静态方法
Dog.sleep("XiaoLan") # 通过类名称调用静态方法
作者:多测师高级讲师_郑sir
微信:ZhengYing8887
出处:https://www.cnblogs.com/ZhengYing0813/
备注:本文版权归作者所有,欢迎转载和添加作者微信探讨技术,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。