支持多重继承和插槽__
stupid的Python项目详细描述
愚蠢的
当使用多重继承和__slots__
安装
pip install stupid
示例
from hashlib import sha512
from stupid import StupidData
class User(StupidData):
name: str
class AccessData(StupidData):
access_code: sha512
class ApiPayload(User, AccessData):
pass
payload = ApiPayload("root", sha512())
payload = ApiPayload(name="root", access_code=sha512())
__slots__
是自动生成的,并使用上面所示的多重继承。
由于存在__slots__
,不允许分配新属性。
>>> payload = ApiPayload(name="root", access_code=sha512())
>>> payload.extra = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'ApiPayload' object has no attribute 'extra'
它也是一个数据类。
>>> from dataclasses import is_dataclass
>>> is_dataclass(ApiPayload)
True
ISINSTANCE检查也有效。
>>> isinstance(payload, User)
True
>>> isinstance(payload, AccessData)
True
issubClass
>>> from stupid import StupidData
>>> class A(StupidData): pass
>>> class B(A): pass
>>> class C:pass
>>>
>>> issubclass(B, A)
True
>>> issubclass(B, C)
False