ensure classes have an __init__ method
Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel,
n'hésitez pas à nous contacter.
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
@frozen
class AnotherClass:
cpu: float
memory: int
def add(self, other):
self.cpu += other.cpu
self.memory += other.memory
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