bim

dataclass example

# Using Python dataclasses for clean data structures

from dataclasses import dataclass, field
from typing import List
from datetime import datetime

@dataclass
class BlogPost:
    title: str
    content: str
    author: str
    tags: List[str] = field(default_factory=list)
    created_at: datetime = field(default_factory=datetime.now)
    published: bool = False

    def word_count(self) -> int:
        return len(self.content.split())

    def summary(self, length: int = 100) -> str:
        if len(self.content) <= length:
            return self.content
        return self.content[:length].rsplit(' ', 1)[0] + '...'


# Usage
post = BlogPost(
    title="Hello World",
    content="This is my first blog post about Python dataclasses.",
    author="Jane Doe",
    tags=["python", "tutorial"]
)

print(f"Title: {post.title}")
print(f"Words: {post.word_count()}")
print(f"Summary: {post.summary(30)}")