Есть ли способ, чтобы Python уведомил, что вы переопределяете несуществующий метод?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ, чтобы Python уведомил, что вы переопределяете несуществующий метод?

Сообщение Anonymous »

В Java у нас есть абстрактные классы и интерфейсы, в которых мы объявляем набор методов, которые будут существовать в объектах, соответствующих при взаимодействии с реализациями этого типа.

Код: Выделить всё

abstract class Foo {
abstract void fooMethod();
}
interface Bar {
void barMethod();
}
и так далее. Когда они реализуются, мы обычно добавляем аннотацию о том, что метод в классе не происходит из текущего класса с именем @Override, что указывает именно на это. Это также служит гарантией того, что компилятор сможет подтвердить, что метод действительно существует в базовом классе, потому что в противном случае компилятор завершится неудачно.

Код: Выделить всё

public class FooImpl { // note this does not have "extends Foo" as defined by above
@Override
void fooMethod() {

}
}

Код: Выделить всё

javac FooImpl.java
FooImpl.java:9: error: method does not override or implement a method from a supertype
@Override
^
1 error
На данный момент в Python 3.14 я определяю свои абстрактные классы с помощью модуля abc следующим образом

Код: Выделить всё

class Foo(abc.ABC):
@abc.abstractmethod
def fooMethod(self):
...
class FooImpl(Foo): # bogus impl
def fooMethod(self):
pass
Но мне нужен способ объявить, что этот метод унаследован, и способ сообщить среде выполнения Python, что этот метод должен существовать в базовом классе (поскольку он может быть удален позже). Есть ли эквивалент в Python 3.14 и выше?


Подробнее здесь: https://stackoverflow.com/questions/798 ... ant-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»