Как правильно написать метод в классе?

Есть два класса. Нужно написать метод в классе report которая будет возвращать id post по BlogHost.

class Post:
    def __init__(self, post_id: int = 1, BlogHost: int = 1):
        self.post_id = post_id
        self.Blog = Blog

class Report:
    def __init__(self, report_id: int = 1, posts: list = None):
        self.report_id = report_id
        self.posts = posts

    def search_post(self, Blog: int,

posts = []
for i in range(1, 9):
    posts.append(Post(post_id=i, BlogHost=1))
    posts.append(Post(post_id=i + 9, BlogHost=2))
    posts.append(Post(post_id=i + 18, BlogHost=3))

report_test = Report(report_id = 2)
report_1.search_post(4)
report_1.print_info()

Ответы (2 шт):

Автор решения: Arty

Вот вариант решения, реализации Report.search_post() (поиск айди поста по айди блога):

Попробовать онлайн!

class Post:
    def __init__(self, post_id: int = 1, Blog: int = 1):
        self.post_id = post_id
        self.Blog = Blog

class Report:
    def __init__(self, report_id: int = 1, posts: list = None):
        self.report_id = report_id
        self.posts = posts

    def search_post(self, blog: int):
        return [post.post_id for post in self.posts if post.Blog == blog]

posts = []
for i in range(1, 9):
    posts.append(Post(post_id=i, Blog=1))
    posts.append(Post(post_id=i + 9, Blog=2))
    posts.append(Post(post_id=i + 18, Blog=3))

report = Report(report_id = 123, posts = posts)
print(report.search_post(blog = 1))
print(report.search_post(blog = 2))
print(report.search_post(blog = 3))
print(report.search_post(blog = 4))

Выход:

[1, 2, 3, 4, 5, 6, 7, 8]
[10, 11, 12, 13, 14, 15, 16, 17]
[19, 20, 21, 22, 23, 24, 25, 26]
[]
→ Ссылка
Автор решения: CrazyElf

Например, так:

def search_post(self, Blog: int):
    return [post.post_id for post in posts if post.Blog == Blog]

Проверка:

report = Report(42, posts)
print(report.search_post(2))

Вывод:

[10, 11, 12, 13, 14, 15, 16, 17]

Да, и "функция в классе" называется "метод класса".

→ Ссылка