相关疑难解决方法(0)

"mro()"有什么作用?

django.utils.functional.py:

for t in type(res).mro():  # <----- this
    if t in self.__dispatch:
        return self.__dispatch[t][funcname](res, *args, **kw)
Run Code Online (Sandbox Code Playgroud)

我不明白mro().它是做什么的,"mro"是什么意思?

python method-resolution-order

118
推荐指数
3
解决办法
5万
查看次数

如何在 Python 中键入提示通用数字类型?

如果之前有人问过这个问题,但我找不到任何相关的答案,请原谅我。

考虑一个将数字类型作为输入参数的函数:

def foo(a):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

这适用于整数、浮点数和复数。

是否有基本类型,以便我可以进行类型提示(真实现有类型/基类),例如:

def foo(a: numeric):
    return ((a+1)*2)**4;
Run Code Online (Sandbox Code Playgroud)

此外,我需要在集合类型参数中使用它,例如:

from typing import Collection;
def foo(_in: Collection[numeric]):
    return ((_in[0]+_in[1])*2)**4;
Run Code Online (Sandbox Code Playgroud)

python types type-hinting python-3.x

23
推荐指数
3
解决办法
6678
查看次数

类型提示中的子类

我想允许使用Python 3的类型提示来接受某个类的子类.例如:

class A:
    pass

class B(A):
    pass

class C(A):
    pass

def process_any_subclass_type_of_A(cls: A):
    if cls == B:
        # do something
    elif cls == C:
        # do something else
Run Code Online (Sandbox Code Playgroud)

现在输入以下代码时:

process_any_subclass_type_of_A(B)
Run Code Online (Sandbox Code Playgroud)

我得到一个PyCharm IDE提示'预期类型A,而不是类型[B].

如何在此处更改类型提示以接受A的任何子类型?

根据这个(https://www.python.org/dev/peps/pep-0484/#type-definition-syntax,"该参数也接受其类型是特定参数类型的子类型的表达式.") ,我明白我的解决方案(cls: A)应该有效吗?

python subclass type-hinting

20
推荐指数
4
解决办法
7873
查看次数

如何对字典(在运行时)进行类型提示/类型检查以查找任意数量的任意键/值对?

我定义一个类如下:

from numbers import Number
from typing import Dict

from typeguard import typechecked

Data = Dict[str, Number]

@typechecked
class Foo:
    def __init__(self, data: Data):
        self._data = dict(data)
    @property
    def data(self) -> Data:
        return self._data
Run Code Online (Sandbox Code Playgroud)

我在用typeguard。我的目的是限制可以进入数据字典的类型。显然,typeguard如果将整个字典传递给函数或从函数返回,则会检查整个字典。如果字典直接“暴露”,那么检查类型就成为字典的“责任”——这显然是行不通的:

bar = Foo({'x': 2, 'y': 3}) # ok

bar = Foo({'x': 2, 'y': 3, 'z': 'not allowed'}) # error as expected

bar.data['z'] = 'should also be not allowed but still is ...' # no error, but should cause one
Run Code Online (Sandbox Code Playgroud)

PEP 589 …

python dictionary type-hinting python-typing

8
推荐指数
1
解决办法
2877
查看次数