为什么 mypy 说我有太多的争论
Why does mypy say I have too many arguments
我有一个 class,它有一个创建 class.
实例的方法
class Bar:
@classmethod
def create(cls, foo: int):
return cls(foo)
def __init__(self, foo: int) -> None:
pass
当我 运行 mypy 反对它时,它说 mypytest.py:4: error: Too many arguments for "Bar"
对我来说这似乎是一个错误,因为它工作正常
class Bar:
@classmethod
def create(cls, foo):
return cls(foo)
def __init__(self, foo: int) -> None:
pass
我不明白为什么定义参数类型的 class 方法会破坏实例的创建。我错过了什么吗?
答案很简单,把__init__
方法放在前面就行了。例如,这很好用:
class Bar:
def __init__(self, foo: int) -> None:
pass
@classmethod
def create(cls, foo: int):
return cls(foo)
由于某些技术原因,如果 __init__
(或 __new__
)不是 class 定义中的第一个方法,mypy 目前在某些极端情况下会出现意外行为。我想我已经看到了类似的问题,但在 mypy tracker 上找不到问题。
我有一个 class,它有一个创建 class.
实例的方法class Bar:
@classmethod
def create(cls, foo: int):
return cls(foo)
def __init__(self, foo: int) -> None:
pass
当我 运行 mypy 反对它时,它说 mypytest.py:4: error: Too many arguments for "Bar"
对我来说这似乎是一个错误,因为它工作正常
class Bar:
@classmethod
def create(cls, foo):
return cls(foo)
def __init__(self, foo: int) -> None:
pass
我不明白为什么定义参数类型的 class 方法会破坏实例的创建。我错过了什么吗?
答案很简单,把__init__
方法放在前面就行了。例如,这很好用:
class Bar:
def __init__(self, foo: int) -> None:
pass
@classmethod
def create(cls, foo: int):
return cls(foo)
由于某些技术原因,如果 __init__
(或 __new__
)不是 class 定义中的第一个方法,mypy 目前在某些极端情况下会出现意外行为。我想我已经看到了类似的问题,但在 mypy tracker 上找不到问题。