一、类方法
1、可以使用类和对象调用,但是建议使用类来调用,可以不创建对象,节省内存。
2、可以使用类属性和其他方法,但是不能使用对象属性和成员方法和私有方法。
3、一般用在功能比较单独,和类中其他属性和方法无关的情况下。
二、静态方法
1、可以使用类和对象调用,但是建议使用类来调用,可以不创建对象,节省内存。
2、不可以使用对象属性和成员方法和私有方法,一般也不要类属性和类方法。
3、就是一个非常普通的函数,只是写在类里面。
class Animal():
def __init__(self,name,age,addr):
# 前面加两下换线,表示私有属性
self.__name = name
self.age = age
self.addr = addr
def __run(self):
# 不能使用私有属性
# print(f'{self.name}今年{self.age}岁了,它住在{self.addr}下')
pass
# 类方法
# @classmethod
@classmethod
def eat(cls):
# print(cls.name) #在类方法中不能使用对象属性和成员方法,因为没有self
print('吃饭:',cls==Animal)
# 静态方法
# 相当于独立的一个函数
@staticmethod
def sleep():
print('睡觉')
animal = Animal('悟空',999,'五指山')
# 不能使用对象调用方法
# animal.__run()
Animal.eat() #类,类方法,推荐
animal.eat() #对象.类方法
Animal.sleep() #类,静态方法 推荐
animal.sleep() #对象,静态方法
'''
吃饭: True
吃饭: True
睡觉
睡觉
Process finished with exit code 0
'''