我正在做一些在Python 3.6中输入的实验.我想设计一个可以通过两种方式实例化的实体类:
p = Person(name='Hannes', age=27))p = Person.from_state(person_state)).Person派生的Entity类将状态类作为泛型参数.但是,当使用pypy验证代码时,我收到一个错误,即Person#from_state没有从它继承的类中获取状态类型:
untitled2.py:47:错误:"实体"的"from_state"的参数1具有不兼容的类型"UserState"; 预期的"StateType"
我认为通过继承Entity[UserState],StateType将被绑定UserState并且子类中的方法签名将相应地更新.
这是完整的代码.我已经标记了我怀疑我做错了事的路线?????.第47行几乎位于底部并在代码中标记.
from typing import TypeVar, Generic, NamedTuple, List, NewType
EntityId = NewType('EntityId', str)
StateType = TypeVar('StateType')
class Entity(Generic[StateType]):
id: EntityId = None
state: StateType = None
@classmethod
def from_state(cls, state: StateType): # ?????
ret = object.__new__(cls)
ret.id = None
ret.state = state
return ret
def assign_id(self, id: EntityId) -> None:
self.id = id
class UserState(NamedTuple): …Run Code Online (Sandbox Code Playgroud) 在DDD中,存储库用于执行聚合的序列化和反序列化,例如通过读取和写入数据库.这样,聚合可以包含更纯粹的业务逻辑,并且不会与非特定于域的持久性策略相关联.
但是,我想知道为什么存储库总是被描述为专门用于聚合.是否同样有动力将它用于所有实体?
(如果这只是一个事实,即所有普通实体都可以看作是零孩子的集合根,请告知我这个问题,这个问题可以埋没.)
oop domain-driven-design repository aggregateroot aggregates
在 Apache Kafka 中,每个代理都有自己的配置文件。某些配置条目(例如代理 ID)显然对于每个节点都是唯一的。
但是,其他主题(例如主题保留时间或最大消息大小)对于整个集群应该是全局的。
如果两个代理的配置发生冲突,哪个值优先?或者我错误地认为某些配置条目应该是全局的?
使用RxJS,我想调用两个不同的异步操作,这些操作可能会也可能不会返回null.他们也可能无限期地完成任务.
我想实现以下目标:
null,则返回null.我想我可以完成前两个简单如下:
const bothOperations = merge(callA(), callB());
const firstSuccess = bothOperations.first(res => res !== null);
return firstSuccess;
Run Code Online (Sandbox Code Playgroud)
但是,我如何获得第三种可能性呢?
aggregates ×1
apache-kafka ×1
asynchronous ×1
entity ×1
generics ×1
javascript ×1
oop ×1
python ×1
python-3.6 ×1
repository ×1
rxjs ×1
types ×1