类和对象的三种方法
实例方法
需要实例化对象才能使用的方法,使用过程中可能需要截至对象的其他对象的方法完成 静态方法
不需要实例化,通过类直接访问 类方法
不需要实例化
class Person():
def eat(self
):
print(self
)
print("eating........")
@
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”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。