2013-03-20 21 views
55

Pythonではどのようにクラスを拡張できますか?私はPythonでクラスを拡張するには?

color.py

class Color: 
    def __init__(self, color): 
     self.color = color 
    def getcolor(self): 
     return self.color 

color_extended.py

import Color 

class Color: 
    def getcolor(self): 
     return self.color + " extended!" 

しかし、これは動作しません... を持っている場合たとえば、私はときに、私はcolor_extended.pyで作業する場合と期待します私はカラーオブジェクトを作成し、getcolor関数を使用すると、 "extended!"という文字列を持つオブジェクトが返されます。最終的には。また、インポートからinitを持つ必要があります。

のpython 3.1

おかげ

+1

ドキュメントを読むようにしましたか? http://docs.python.org/2.7/tutorial/classes.html#inheritance – wRAR

+0

クラスは最初の文字を大文字にする必要があります( "Color" not "color");) – daveoncode

+3

@wARARおそらく2013年にはこれは妥当な質問ですが正直言ってみましょう。人々はまずStackOverflowに目を向けるので、これは良いことです。この質問は、最初のGoogleのヒット "python拡張クラス"、ドキュメントは3番目です。 –

答えて

58

使用と仮定します

:これは、Python 2.xのであれば、あなたもそれを new-style classを作るために、 objectから color.Colorを導出したい

import color 

class Color(color.Color): 
    ... 

class Color(object): 
    ... 

Python 3.xでは必要ありません。

+22

新しいクラスには古いクラスと同じ名前を付けることができます。 'class color(color):'は古いクラスを置き換える新しいクラスを定義します。 (これは、OPがやろうとしているようです。) – kindall

+11

'class extended_color(color):'は悪い標準です - 通常 'class ExtendedColor(Color):'はクラス用です。ちょうどニックピック – TyrantWave