Search code examples
pythonclassoopmetaprogrammingmetaclass

generic Class in Python


I want to do a generic class in Python with one method

  • This class does not generate its instances
  • Some attributes are set in the body of the class
  • Method of this class uses the set attributes and in the generated classes the output of this method depends on these attributes
  • Method has only one input

I know that without metaclasses will not do, but I do not know how to apply them :)

something like this:

class GenericClass:
  attr_a = ''
  attr_b = ''
  def count(text):
    return len(text)/attr_a + attr_b

class A(GenericClass):
  attr_a = 2
  attr_b = 1

text = "Hello, I'm under the water"
print(A.count(text))
# 14

Solution

  • Defining count as a class method would make that work:

    @classmethod
    def count(cls, text):
        return len(text) / cls.attr_a + cls.attr_b