@DmitriyKobrin

Python — Невозможно создать экземпляр абстрактного класса ... с помощью абстрактных методов?

Can't instantiate abstract class IsAdminFilter with abstrat method check.

Долгое время уже прыгаю по сайтам, но так и не понял что нужно сделать, помогите пожалуйста.
Код прикрепил ниже.

from abc import ABC, abstractmethod
from aiogram import types
from aiogram.dispatcher.filters import BoundFilter
from required import validate

class IsAdminFilter(BoundFilter):
	key = 'is_admin'
	def __init__(self, is_admin: bool):
		self.is_admin = is_admi
		
		async def check(self, message: types.Message):
		      member = await message.bot.get_chat_member(message.from_user.id, message.chat.id)
		      return member.is_chat_admin() == self.is_admin
  • Вопрос задан
  • 2207 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
Абстрактный класс на то и абстрактный, что его нельзя инстанцировать
Ответ написан
Vindicar
@Vindicar
RTFM!
Отступы косые, будь внимательнее.
У тебя check() объявлена как локальная функция внутри __init__(), соответственно в самом классе такого метода нет. А так как метод объявлен абстрактным в BoundFilter и не переопределён в твоём классе, то и твой класс остаётся абстрактным. А потому попытка создать его экземпляр проваливается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 02:45
2000 руб./за проект
24 нояб. 2024, в 23:46
20000 руб./за проект