实例方法取决于实例

时间:2017-04-16 09:40:14

标签: python python-3.x

我有一个C类和一个方法f。我希望f在几个实例中的表现不同。

例如,如果我的班级是动物而f正在打印"我是"和动物的名字,我喜欢:

cat.f() prints "I'm a cat"
dog.f() prints "I'm a dog"
puma.f() prints "I'm a BIG puma"

f的行为改变为美洲狮。它可能与一个词有很大的不同。 我可以使用派生类,但对于这样的事情似乎很重要。 什么是最干净的方法呢?

1 个答案:

答案 0 :(得分:0)

这正是继承的用途。而且它不是太重 - 这是解决这个问题最干净,最期望的解决方案。

无法从该对象内部告知对象的变量名称,因此如果您想要特定于实例的行为,您还可以预先配置这些实例:

class Animal:
    def __init__(self, name):
        self.name = name

    def f(self):
        print("I'm a", self.name)

    def set_name(self, new_name):
        self.name = new_name