Django Restframework 大神: TOM CHRISTIE
C++ 静态多态
静多态(Static Polymorphism)是多态性的一种。多态性可按照发生的时间段分为静多态和动多态(Dynamic Polymorphism)
Flask 基础知识
自己去看下spring最基础知识
A要用B对象的时候,会去new一个B,
C调用的时候也会去new一个B。
现在在B上面加了个注解,
项目启动的时候去扫描这个带这个注解的B,
然后通过反射去实例化B,放到map容器里,
使用的时候就不用new了,直接把B注入进来
-- 相当于深拷贝么
-- 应该不是,反射的还是同一个对象
Python 元类
def with_metaclass(meta, *bases):
"""Create a base class with a metaclass."""
# This requires a bit of explanation: the basic idea is to make a
# dummy metaclass for one level of class instantiation that replaces
# itself with the actual metaclass.
class metaclass(type):
# metacls type 自己,name 是要创建的类的名称, this_bases 是 父类基类, d 是属性。
def __new__(metacls, name, this_bases, d):
return meta(name, bases, d)
return type.__new__(metaclass, "temporary_class", (), {})
【妖怪】青衣(775344409) 10:53:49 第一个是type 自己吧,第十个要创建的 类的名称(name), bases 和attrs 分别是什么意思呢?
【八戒】question mark(1603753920) 10:54:46 bases 是父类
【八戒】question mark(1603753920) 10:54:53 attrs是方法或者属性
Python装饰器理解.
【妖怪】青衣(775344409) 9:52:41
Python 里面的装饰器,能不能 理解成 函数的函数.
【白马】路伴友行(1947435524) 9:59:32
本质是高阶函数
【白马】路伴友行(1947435524) 9:59:53
装饰器 只是语法糖
【沙僧】渐行渐远(1020193131) 10:00:08
🌱青衣🌱
Python 里面的装饰器,能不能 理解成 函数的函数.
@🌱青衣🌱 可以
【白马】路伴友行(1947435524) 10:00:12
导入时执行的
【白马】路伴友行(1947435524) 10:00:12
导入时执行的
运行时 已经变了
【白马】路伴友行(1947435524) 10:03:54
question mark
@路伴友行 装饰器不能控制 是否运行吧
@question mark
不是这个意思
【白马】路伴友行(1947435524) 10:04:14
导入时对装饰器做了预处理
【八戒】question mark(1603753920) 10:04:31
@路伴友行 我想实现一个功能 可以控制装饰器根据条件 是否执行 这个功能行不行
【白马】路伴友行(1947435524) 10:05:06
可以呀
【八戒】question mark(1603753920) 10:05:13
怎么实现
【八戒】question mark(1603753920) 10:05:22
这个装饰器不是我实现的
【白马】路伴友行(1947435524) 10:05:22
带参数的装饰器
【白马】路伴友行(1947435524) 10:05:38
那就在装饰一层
【沙僧】in探索者_北京(1770226120) 10:05:56
没区别 都是func @🌱青衣🌱
你只需要关注调用方式和参数传递
在 fastapi 中, 或者一个类. endpoint 是一个函数
C:\Users\tim\PycharmProjects\fs\venv\Lib\site-packages\starlette\routing.py
def get_name(endpoint: typing.Callable) -> str:
if inspect.isfunction(endpoint) or inspect.isclass(endpoint):
return endpoint.__name__
return endpoint.__class__.__name__


强制关键字参数.
强制关键字参数是3.1版本引入的新特性,目的是在可变长度的位置参数或关键字参数后增加常规参数(可选填默认值),给其赋值必须强制通过关键字传入。
强制关键字参数不同于关键字参数。
1)下面的参数列表在Python2中不被允许,但现在a是一个强制关键字参数,给a赋值必须强制给出"a=xx"
>>> def foo(*args, a):
... print(args, a)
foo(1,2,3,4):错误,a未被赋值
foo(1,2,3,4, a=5):正确
>>> def foo(*args, a=5):
... print(args, a)
foo(1,2,3,4):正确,但a为默认值5
2)引入* 标记
在可变长度的位置参数或是关键字参数后跟常规参数,那么该常规参数就一定是强制关键字参数,但在常规参数后如何跟强制关键字参数呢?
def compare(a, b, *, q1, q2=3):
...
* 之后的都是强制关键字参数,上面例子中q1与q2都是强制关键字参数
>>> def foo(a,b,c=3): # c是关键字参数
... print(a,b,c)
foo(1,2,4):返回"1 2 4"
>>> def foo(a,b,*,c=3): # c是强制关键字参数
... print(a,b,c)
foo(1,2,4):错误,c未被赋值
foo(1,2,c=4):正确,返回"1 2 4"
总之: 强制关键字参数的赋值必须显示通过关键字传入。 当强制关键字参数无默认值时,调用时必须给其赋值,否则报错;当强制关键字参数有默认值时,若调用时不给其显示赋值,其使用默认值。
来源:oschina
链接:https://my.oschina.net/innovation/blog/4329220