2017-04-16 102 views
1

我有一個類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改變的行爲。它可能會比單純一詞有很大不同。 我可以使用派生類,但對於這樣的事情似乎很沉重。 乾淨的方法是什麼?

+0

如果你的「動物」繼承'動物'你應該閱讀[這篇文章](http://stackoverflow.com/questions/6943182/get-name-of-current-class) –

回答

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