Day_13_AM_Class_Methods_and_Static_Methods
#
class Dog:
age = 2
def __init__(self, name):
self.name = name
def run(self):
print("成员方法/公有方法")
def __eat(self):
print("私有方法: 只能在当前类内部使用")
# 类方法:
# 1. 可以用类和对象调用, 推荐用类调用,可以节省内存
# 2. 类方法内部是不可以使用对象属性和其他成员方法或私有方法,
# 3. 类方法内部可以使用其他 类方法或类属性
@classmethod
def sleep(cls): # cls: class
print("类方法:", cls==Dog) # True
print(cls.age) # 调用类属性
# 静态方法:
# 1. 可以用类和对象调用, 推荐用类调用,可以节省内存
# 2. 静态方法内部是不可以使用对象属性和其他成员方法或私有方法,
# 3. 也不建议去使用类属性和类方法, 一般写成静态方法的就是一个普通函数,只是放在类里面
@staticmethod
def swim():
print('静态方法')
# 对象
d = Dog('哮天犬')
d.sleep() # 类方法: True
Dog.sleep() # 类方法: True
d.swim()
Dog.swim()