Как правильно написать метод в классе?
Есть два класса. Нужно написать метод в классе 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]
Да, и "функция в классе" называется "метод класса".