This product is not supported for your selected Datadog site. ().

Metadata

ID: python-best-practices/init-method-required

Language: Python

Severity: Notice

Category: Best Practices

Description

Ensure that a class has an __init__ method. This check is bypassed when the class is a data class (annotated with @dataclass).

Non-Compliant Code Examples

class Foo:  # need to define __init__ 	def foo(bar): 		pass 	def bar(baz): 		pass 

Compliant Code Examples

# dataclass do not require an init class @dataclass class Requests:     cpu: float  # expressed in cpu cores     memory: int  # expressed in bytes      @staticmethod     def from_pod(pod: V1Pod):         cpu = 0.0         memory = 0          for container in pod.spec.containers:             cpu += parse_cpu_string(container.resources.requests["cpu"])             memory += parse_memory_string(container.resources.requests["memory"])          return Requests(cpu, memory)      def add(self, other):         self.cpu += other.cpu         self.memory += other.memory  @dataclasses.dataclass class DependencyKey:     name: str     version: str      def __hash__(self):         if self.version is None:             version = ""         else:             version = self.version         return hash(self.name + version)  @frozen class AnotherClass:     cpu: float     memory: int     def add(self, other):         self.cpu += other.cpu         self.memory += other.memory  @dataclasses.dataclass(frozen=True) class Settings:     keys: list[[str, str]]      def get_keys(self):         return self.keys 
class Child(Parent):   def fn():       pass  class AnotherChild(modname.Parent):   def another_fn():     pass 
class UserLoginTest(TestCase):     def setUp(self):         self.username = 'testuser'         self.password = 'testpassword'         self.user = User.objects.create_user(username=self.username, password=self.password)      def test_correct_credentials(self):         user = authenticate(username=self.username, password=self.password)         self.assertIsNotNone(user)         self.assertEqual(user, self.user)      def test_incorrect_credentials(self):         user = authenticate(username=self.username, password='wrongpassword')         self.assertIsNone(user) 
from django.db import migrations, models import django.db.models.deletion   class Migration(migrations.Migration):      dependencies = [     ]      operations = [     ] 
@dataclass class Foo:  # no __init__ required for dataclass 	value = 51 
class Foo: 	def __init__(self): 		pass 
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Security