在Python中,基类可以通过hasattr
和getattr
方法来判断子类是否覆盖了基类的方法。以下是一个示例:
class BaseClass:
def method(self):
print("Base class method")
class SubClass(BaseClass):
def method(self):
print("Subclass method")
def check_method_overridden(base_class, sub_class):
if hasattr(sub_class, 'method') and getattr(sub_class, 'method') != getattr(base_class, 'method'):
print("Subclass has overridden the method")
else:
print("Subclass has not overridden the method")
base = BaseClass()
sub = SubClass()
check_method_overridden(BaseClass, SubClass)
在这个例子中,我们定义了一个基类BaseClass
和一个子类SubClass
,子类覆盖了基类的method
方法。我们定义了一个check_method_overridden
函数,该函数接受两个参数:基类和子类。我们使用hasattr
方法检查子类是否具有method
属性,然后使用getattr
方法获取基类和子类的method
方法。如果子类的method
方法与基类的method
方法不同,则表示子类覆盖了基类的method
方法。
在这个例子中,输出将是“子类已覆盖基类的方法”,因为子类覆盖了基类的method
方法。
领取专属 10元无门槛券
手把手带您无忧上云