2017-04-16 8 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

は、そのオブジェクト内からオブジェクトの変数名を指示する方法はありませんので、あなたは、インスタンス固有の動作をしたい場合、あなたはまた、そうのように、これらのインスタンスを事前に設定でき'Animal'から継承してください。[this post](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 
関連する問題