跳转至

OOP-抽象类

抽象方法:

  • 了解抽象类之前首先了解抽象方法
  • 抽象方法只定义方法而不实现内容
  • 有些时候在父类实现可能在子类不ok,比如每个子类的功能可能不尽相同
  • 抽象方法主要规范了子类的行为和接口
class animel(): #创建抽象类   由子类实现
    def say_hello(self): 
        pass   # 每种动物打招呼的方式可能不同

class dog(animel): # 狗类
    def say_hello(self): # 实现打招呼
        print('闻一闻')
class people(animel): # 人类
    def say_hello(self): # 实现打招呼
        print('握手')

抽象类

  • 就是包含抽象方法的类
  • 抽象类可以包含抽象方法 也可以包含具体方法,类中可以有方法有成员属性
  • 抽象类不允许实例化,必须继承才可以使用,且继承的子类必须实现所有的抽象方法,假定子类没有实现所有的方法,则子类也不能实例化
  • 抽象类主要设定类的标准以便开发时同一规范
import abc
class man(metaclass=abc.ABCMeta):#定义一个类并且指定抽象类的元类

    @abc.abstractmethod  #定义一个抽象方法
    def somking(self):
        pass

    @abc.abstractclassmethod #定义类抽象方法
    def drink(cls):
        pass

    @abc.abstractstaticmethod #定义一个静态方法
    def play():
        pass

    def sleep(self):#定义具体方法
        print('sleeping')




d = dog()
p = people()
d.say_hello()
p.say_hello()