Return True if a method named ``method_name`` of a ``base_class`` is overridden in a ``subclass``. >>> class Base: ... def foo(self): ... pass >>> class Sub1(Base): ... pass >>> class Sub2(Base): ... def foo(self): ... pass >>
(subclass: type, base_class: type, method_name: str)
| 167 | |
| 168 | |
| 169 | def method_is_overridden(subclass: type, base_class: type, method_name: str) -> bool: |
| 170 | """ |
| 171 | Return True if a method named ``method_name`` of a ``base_class`` |
| 172 | is overridden in a ``subclass``. |
| 173 | |
| 174 | >>> class Base: |
| 175 | ... def foo(self): |
| 176 | ... pass |
| 177 | >>> class Sub1(Base): |
| 178 | ... pass |
| 179 | >>> class Sub2(Base): |
| 180 | ... def foo(self): |
| 181 | ... pass |
| 182 | >>> class Sub3(Sub1): |
| 183 | ... def foo(self): |
| 184 | ... pass |
| 185 | >>> class Sub4(Sub2): |
| 186 | ... pass |
| 187 | >>> method_is_overridden(Base, Base, 'foo') |
| 188 | False |
| 189 | >>> method_is_overridden(Sub1, Base, 'foo') |
| 190 | False |
| 191 | >>> method_is_overridden(Sub2, Base, 'foo') |
| 192 | True |
| 193 | >>> method_is_overridden(Sub3, Base, 'foo') |
| 194 | True |
| 195 | >>> method_is_overridden(Sub4, Base, 'foo') |
| 196 | True |
| 197 | """ |
| 198 | base_method = getattr(base_class, method_name) |
| 199 | sub_method = getattr(subclass, method_name) |
| 200 | return base_method.__code__ is not sub_method.__code__ |
| 201 | |
| 202 | |
| 203 | def argument_is_required(func: Callable[..., Any], arg_name: str) -> bool: |
no outgoing calls
no test coverage detected