1.面向对象 class self
https://zhuanlan.zhihu.com/p/356325860
function和method的区别:
普通函数丨 在类中定义的函数
与普通的函数相比,在类中定义的函数只有两点不同:
(1)第一个参数永远是 self ,并且调用时不用传递该参数。
(2)类中函数相互调用要加 self 。
class Person(object):
def __init__(self,x,y):
self.x = x
self.y = y
def add(self):
sum = self.x + self.y
return sum
def square(self):
squr = pow(self.x,2)+pow(self.y,2)
return squr
def add_square(self):
c = self.add()+self.square() ####看这里####
return c
除此之外,类的方法和普通函数没甚区别,当然也可以使用 默认参数、可变参数和关键字参数。
其实 self 这家伙简单的说就是把 class 中 定义的 变量和函数 变成 实例变量和实例函数,作为类 class 的成员,使得成员间能互相调用,而不需要从外部调用 数据(即变量)和 方法(即 函数),以实现数据的封装。
解释二:
类就像一个表格或问卷。它定义了所需的信息。填写表格后,您的特定副本就是该类的一个实例;它包含与您相关的实际信息。
您可以填写多个副本以创建许多不同的实例,但如果没有表单作为指导,您将会彻底迷失,不知道需要哪些信息。因此,在创建对象的单个实例之前,我们必须首先通过定义类来指定所需的内容。
super
2.装饰器 Decorators
使用装饰器的好处:
可以把我们的业务逻辑和控制逻辑分离开,业务开发人员可以更好地关注业务逻辑,装饰器可以方便地实现对控制逻辑的统一定义,这种方式也遵循了设计模式中的单一职责。
“装饰器我个人认为是Python中最最最难的知识点”
装饰器是闭包的一种应用。
装饰器是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。使用时,在需要的函数前加上@demo即可。
装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数,即装饰器是一个函数,它以函数作为参数,返回另一个函数。
常用场景:
授权(Authorization)(Flask和Django web)
日志(Logging)
如:记录日志、记录执行耗时、本地缓存、路由映射等功能。
函数装饰器
类装饰器,对象装饰器
@myDecorator
def aFunction():
# 。。。
等价于
def aFunction():
# 。。。
aFunction = myDecorator(aFunction)
if name == ‘main’:
with
语句使代码更清晰、更具可读性, 它简化了文件流等公共资源的管理。