Python 约束"/>
Python 约束
任务:要求其他接口必须继承User类,并且重写login()方法,后期各接口只调用login()方法来实现登录。
1、主动抛出错误
class User:"""必需重写login()方法"""def login(self):raise NotImplementedError('.login() must be overwrite')class WeChat(User):def __init__(self, name):self.name = name# 这里重写login方法,如果重写后期调用login方法是会抛出错误def login(self):print(self.name, '登陆成功')# 这里可以重写,也可以不用重写,没有对其进行约束def logout(self):print(self.name, '注销登录')obj = WeChat('李明')
obj.login()# 如果没有重写login方法就会调用父类的login方法,这时就会抛出错误,如下:
raise NotImplementedError('.login() must be overwirte')
NotImplementedError: .login() must be overwirte
2、使用抽象类和方法类进行约束
from abc import ABCMeta, abstractmethodclass user(metaclass=ABCMeta): # 创建一个抽象类def logout(self):print('注销')# 抽象方法@abstractmethoddef login(self):print('登录')class WeChat(user):def __init__(self, name):self.name = name# 必须重写login方法,否则报错def login(self):print(self.name, '登录成功')def logout(self):print(self.name, '注销登录')obj = WeChat('lily')
obj.login()# 这是没有重写login方法的错误信息:
TypeError: Can't instantiate abstract class WeChat with abstract methods login
更多推荐
Python 约束
发布评论