Skip to content

dataclasses: implicitly defined __dict__ and __weakref__ slots of inherited classes are ignored. #105866

Closed
@avboag

Description

@avboag

Bug report

The weakref slot is redefined when inherited from a class which didn't specify slots at all (and thus has a dict and weakref slots).

from dataclasses import dataclass

class A:
    pass

@dataclass(slots=True, weakref_slot=True)
class B(A):
    pass

gives the following error:

TypeError: __weakref__ slot disallowed: either we already got one, or __itemsize__ != 0

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions