类和对象的三种方法
- 实例方法
- 需要实例化对象才能使用的方法,使用过程中可能需要截至对象的其他对象的方法完成
- 静态方法
- 不需要实例化,通过类直接访问
- 类方法
- 不需要实例化
# 三种方法的案例
class Person():
# 实例方法
def eat(self):
print(self)
print("eating........")
# 类方法
# 类方法的第一个参数,一般命名为cls,区别于self
@classmethod
def play(cls):
print(cls)
print("playing..........")
# 静态方法
# 不需要调用第一个参数表示自身或者类
@staticmethod
def say():
print("Saying.......")
yy = Person()
# 实例方法
yy.eat()
# 类方法
Person.play()
yy.play()
# 静态方法
Person.say()
yy.say()
<__main__.Person object at 0x000001A089791518>
eating........
<class '__main__.Person'>
playing..........
<class '__main__.Person'>
playing..........
Saying.......
Saying.......
三种方法使用方面的区别
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能由实例对象调用。
类方法
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
静态方法
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。