Skip to content

Attribute functions in stubs and dataclasses.Field  #10750

Closed
@hauntsaninja

Description

@hauntsaninja

So something like the following gives me main.py:4: error: Attribute function "default_factory" with type "Callable[[], _T]" does not accept self argument:

import dataclasses

def foo(x: dataclasses.Field):
    if x.default_factory is not dataclasses.MISSING:
        ...

Okay, hmm. Let's try to repro:

from typing import Callable
        
class X:
    # f: Callable[[], str]
    def __init__(self) -> None:
        self.f = lambda: "whatever"

x = X()
reveal_type(x.f)
reveal_type(x.f())

This works fine! But if you uncomment the commented line, then you're back to the error, which is problematic if you want to express this in stubs. I can get things checking again by using a callback protocol — is that the best one can do?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions