我有一组不相关的类(一些是导入的),它们都有一个a类型为 的公共属性(或属性) dict[str, Any]。
其中akey 下应该有另一个字典"b",我想将其作为属性公开在任何这些类上b以简化inst.a.get("b", {})[some_key]为inst.b[some_key]。
我已将以下子类工厂用作本地类的类装饰器和导入类的函数。
但到目前为止,我未能cls正确键入提示其参数并返回值。
from functools import wraps
def access_b(cls):
@wraps(cls, updated=())
class Wrapper(cls):
@property
def b(self) -> dict[str, bool]:
return self.a.get("b", {})
return Wrapper
Run Code Online (Sandbox Code Playgroud)
我最近一次打字尝试的 MRE(有mypy 0.971错误):
from functools import wraps
from typing import Any, Protocol, TypeVar
class AProtocol(Protocol):
a: dict[str, Any]
class BProtocol(AProtocol, Protocol):
b: dict[str, bool]
T_a = TypeVar("T_a", bound=AProtocol)
T_b = TypeVar("T_b", bound=BProtocol)
def …Run Code Online (Sandbox Code Playgroud) 我想创建一个排名函数来计算一个人访问财产的次数BY DATE,但条件是不包含访问类别。'Calls'
DENSE_RANK() over(partition by activitytable.[Property]
ORDER BY activitytable.[Date] as Job rank
Run Code Online (Sandbox Code Playgroud)
这样做对我不想要的整个通信表进行排名。
| 活动ID | 财产 | 日期 | 通讯类型 | 秩 |
|---|---|---|---|---|
| 1046 | 红色地产 | 2019年10月30日 | 场地 | 2 |
| 10467 | 红色地产 | 2019年10月29日 | 场地 | 1 |
| 10591 | 红色地产 | 2019年10月28日 | 通话 | |
| 10971 | 蓝色地产 | 2019年10月27日 | 场地 | 2 |
| 10971 | 蓝色地产 | 2019年10月26日 | 场地 | 1 |
| 10971 | 蓝色地产 | 2019年10月26日 | 来电 | |
| 10965 | 绿色地产 | 2019年10月24日 | 来电 | |
| 10765 | 绿色地产 | 2019年10月23日 | 来电 | |
| 10765 | 绿色地产 | 2019年10月19日 | 场地 | 3 |
| 10765 | 绿色地产 | 2019年10月15日 | 场地 | 2 |
| 10765 | 绿色地产 | 2019年10月12日 | 场地 | 1 |
理想情况下,我希望表格像上面一样显示,以忽略通信类型列的呼叫元素并仅计数字段类别。我怎么能这样做呢?