消息 [400868]
I believe [`bpo-44806: Fix __init__ in subclasses of protocols`](https://github.com/python/cpython/pull/27545) has caused a regression when using a Dataclass.
In Python `3.9.7`, a `dataclass` that inherits from a subclass of `typing.Protocol` (i.e., a user-defined protocol), does not have the correct `__init__`.
### Demonstration
```python
from dataclasses import dataclass
from typing import Protocol
class P(Protocol):
pass
@dataclass
class B(P):
value: str
print(B("test"))
```
In `3.9.7`:
```shell
Traceback (most recent call last):
File "test.py", line 11, in <module>
print(B("test"))
TypeError: B() takes no arguments
```
In `3.9.6`:
```shell
B(value='test')
```
### Affected Projects
- [dbt](https://github.com/dbt-labs/dbt/issues/3843) |
|
| 日期 |
用户 |
动作 |
参数 |
| 2021-09-01 21:06:11 | julianfortune | 修改 | recipients:
+ julianfortune |
| 2021-09-01 21:06:11 | julianfortune | 修改 | messageid: <1630530371.11.0.748962218101.issue45081@roundup.psfhosted.org> |
| 2021-09-01 21:06:11 | julianfortune | 链接 | issue45081 messages |
| 2021-09-01 21:06:11 | julianfortune | 创建 | |
|