如何实现包含方法的python类属性?

时间:2017-08-24 13:37:41

标签: python inheritance mixins

我有一个Animal类,我希望它有一个允许访问一组特定函数的属性。

class Animal(object):
    def __init__(self, age):
        self.age = age

rex = Animal()
rex.actions.bark()
rex.actions.say_age()

我尝试创建一个Actions类并将其用作具有多重继承的mixin,但这只允许我这样做:

rex.say_age()

这不是我想要的。

我还尝试创建一个充满静态方法并使用它们的Actions类,但这迫使我将Animal的属性传递给方法。

我知道pandas实现了这个(Series.str就是一个例子),但它看起来需要大量的专有开销

有没有pythonic的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

只需创建另一个在构造函数中使用Animal的类。

class AnimalActions(object):
  def __init__(self, animal):
    self.animal = animal

class Animal(object):
  def __init__(self, age):
    self.age = age
    self.actions = AnimalActions(self)