fork download
  1. from abc import ABCMeta, abstractmethod
  2.  
  3. class DynamicAbstractMeta(ABCMeta):
  4. def __new__(cls, name, bases, namespace):
  5. if cls not in map(type, bases):
  6. item_attributes = ["person", "animal"]
  7. for attribute in item_attributes:
  8. namespace[attribute] = abstractmethod(lambda x, a=attribute: None)
  9. return super().__new__(cls, name, bases, namespace)
  10.  
  11. class A(metaclass=DynamicAbstractMeta):
  12. pass
  13.  
  14. class Item(A):
  15. def person(self):
  16. print("person")
  17.  
  18. def animal(self):
  19. print("animal")
  20.  
  21. item_instance = Item()
  22. item_instance.person()
  23. item_instance.animal()
Success #stdin #stdout 0.03s 9744KB
stdin
Standard input is empty
stdout
person
animal