no-annotated-self¶
Forbid explicit type annotations on instance-method self parameters.
Message¶
Do not annotate self in instance methods.
Valid examples¶
class A:
def method(self, value: int) -> int:
return value
def helper(self: object, value: int) -> int:
return value
Show more
class A:
@classmethod
def build(cls, value: int) -> "A":
return cls()
class A:
@classmethod
def build(self: type["A"]) -> "A":
return self()
from builtins import classmethod as cm
class A:
@cm
def build(self: type["A"]) -> "A":
return self()
class A:
@staticmethod
def helper(self: int) -> None:
pass
from builtins import staticmethod as sm
class A:
@sm
def helper(self: int) -> None:
pass
import builtins as builtin_values
class A:
@builtin_values.staticmethod
def helper(self: int) -> None:
pass
Invalid examples¶
class A:
def method(self: "A", value: int) -> int:
return value
Suggested fix
class A:
def method(self, value: int) -> int:
return value
Show more
class A:
async def method(self: "A") -> None:
return None
Suggested fix
class A:
async def method(self) -> None:
return None
def outer():
class A:
def method(self: "A") -> None:
pass
Suggested fix
def outer():
class A:
def method(self) -> None:
pass