data class
This commit is contained in:
50
src/advance/data_class_generation.py
Normal file
50
src/advance/data_class_generation.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
from dataclasses import dataclass, make_dataclass
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Car:
|
||||||
|
# Instance variables (required first)
|
||||||
|
name: str
|
||||||
|
color: str
|
||||||
|
|
||||||
|
year: int = 2025 # default value
|
||||||
|
price: Optional[float] = None # nullable (Optional)
|
||||||
|
|
||||||
|
# Class variable (static) - shared by all cars
|
||||||
|
extra_wheels: int = 1
|
||||||
|
# Car(name='BMW', color='black', year=2025, price=None, extra_wheels=1)
|
||||||
|
|
||||||
|
wheels: ClassVar[int] = 4 # won’t appear in __init__, shared by all
|
||||||
|
# Car(name='BMW', color='black', year=2025, price=None, extra_wheels=1)
|
||||||
|
# Custom string output
|
||||||
|
|
||||||
|
|
||||||
|
car = Car(name="BMW", color="black")
|
||||||
|
print(car)
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# fields dynamic
|
||||||
|
|
||||||
|
field_definitions = [
|
||||||
|
("name", str, "Unknown"),
|
||||||
|
("color", str, "Black"),
|
||||||
|
("year", int, 2025),
|
||||||
|
("price", Optional[float], None),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Add more fields dynamically (simulate 30+ attributes)
|
||||||
|
for i in range(5, 35):
|
||||||
|
field_definitions.append((f"attr{i}", Optional[str], None))
|
||||||
|
|
||||||
|
# Step 2: Create dataclass dynamically
|
||||||
|
Bus = make_dataclass("Bus", field_definitions)
|
||||||
|
|
||||||
|
bus = Bus()
|
||||||
|
|
||||||
|
bus.attr32 = "46"
|
||||||
|
print(bus)
|
||||||
Reference in New Issue
Block a user