from abc import ABCMeta, abstractmethod

# 定义一个抽象类
class Person(metaclass=ABCMeta):
name = "泰山"
@classmethod # 类方法
def walking(cls):
print("{}在走路".format(cls.name))

@abstractmethod # 抽象方法
def drinking(self):
pass

@staticmethod # 静态方法
def sleeping(name):
print("{}在睡觉".format(name))


class Student(Person):
# 抽象方法
def drinking(self):
print("{}在喝水".format(self.name))

# 实例方法
def studying(self):
print("好好学习天天向上")


if __name__ == '__main__':
s = Student()
#实例化的对象可以调用类方法装饰器装饰的函数
s.walking()

# 实例化的对象调用抽象方法(子类要实现用装饰器装饰的抽象方法)
s.drinking()

#实例化的对象调用实例方法
s.studying()

#类不能调用实例方法
Student.studying()
#要想类也能调用实例方法或抽象方法,需要将实例对象传入即可
Student.studying(s)
Student.drinking(s)

# 类可以调用类方法装饰器装饰的函数
Student.walking()

# 实例化的对象和类可以调用静态方法装饰器装饰的函数
s.sleeping(s.name)
Student.sleeping(Student.name)


-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!