扩展类
扩展类#
介绍#
想要使用服务提供者向类添加新方法是很常见的。例如,您可能想向 Request
类添加 is_authenticated
方法。您的包和服务提供者可能会使用更好的身份验证系统。
您可以轻松扩展从 Extendable
类继承的类。许多内置类都继承自它。
用法#
您可以使用几种方法将方法添加到任何核心类中。您可以使用函数,类和类方法扩展类。典型用法如下:
def is_authenticated(self):
return self
def show(self, request: Request):
request.extend(is_authenticated)
print(request.is_authenticated()) # returns the Request class
用法非常简单,并且有几个扩展类的选项。注意,我们不调用该函数,而是将引用传递给它。
扩展一个方法#
这会将函数作为绑定方法添加到 Request
类中
def is_authenticated(self):
return self
def show(self, request: Request):
request.extend(is_authenticated)
print(request.is_authenticated()) # returns the Request class
扩展一个类方法#
我们还可以扩展类方法,该方法将采用给定的方法并将其添加为绑定方法。
class Authentication:
def is_authenticated(self):
return self
def show(self, request: Request):
request.extend(Authentication.is_authenticated)
print(request.is_authenticated()) # returns the Request class
扩展类#
我们甚至可以扩展整个类,该类将获取所有类方法并为 Request 类创建绑定方法。
class Authentication:
def is_authenticated(self):
return self
def login(self):
return self
def show(self, request: Request):
request.extend(Authentication)
print(request.is_authenticated()) # returns the Request class
print(request.login()) # returns the Request class
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: