from abc import ABCMeta, abstractmethod

class DynamicAbstractMeta(ABCMeta):
    def __new__(cls, name, bases, namespace):
        if cls not in map(type, bases):
            item_attributes = ["person", "animal"]
            for attribute in item_attributes:
                namespace[attribute] = abstractmethod(lambda x, a=attribute: None)
        return super().__new__(cls, name, bases, namespace)

class A(metaclass=DynamicAbstractMeta):
    pass

class Item(A):
    def person(self):
        print("person")

    def animal(self):
        print("animal")

item_instance = Item()
item_instance.person()
item_instance.animal()