Pattern: Invalid overridden method
Issue: -
Used when we detect that a method was overridden as a property or the other way around, which could result in potential bugs at runtime.
Example of incorrect code:
class SuperClass(metaclass=abc.ABCMeta):
@property
@abc.abstractmethod
def prop(self):
pass
@abc.abstractmethod
def method(self):
pass
class NoProp(SuperClass):
def prop(self): # [invalid-overridden-method]
return None
@property
def method(self): # [invalid-overridden-method]
return None
Example of correct code:
class SuperClass(metaclass=abc.ABCMeta):
@property
@abc.abstractmethod
def prop(self):
pass
@abc.abstractmethod
def method(self):
pass
class Prop(SuperClass):
@property
def prop(self):
return None
def method(self):
pass