2013-03-20 22 views
55

In python come si può estendere una classe? Per esempio se hoCome estendere una classe in 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!" 

Ma questo non funziona ... mi aspetto che se io lavoro in color_extended.py, poi quando Faccio un oggetto a colori e uso la funzione getcolor quindi restituirà l'oggetto con la stringa "estesa!" alla fine. Inoltre dovrebbe avere gotton l'init dall'importazione.

Si supponga python 3.1

Grazie

+1

Hai provato a leggere la documentazione? http://docs.python.org/2.7/tutorial/classes.html#inheritance – wRAR

+0

le classi dovrebbero avere la prima lettera maiuscola ("Colore" non "colore");) – daveoncode

+3

@wRAR Forse nel 2013 questa è una domanda ragionevole, ma siamo onesti: le persone si rivolgono prima a StackOverflow, quindi questa è una buona domanda da avere su SO. Questa domanda è il primo hit di google per "python extend class", la documentazione è terza. –

risposta

58

Usa:

import color 

class Color(color.Color): 
    ... 

Se questo fosse Python 2.x, si potrebbe anche voler ricavare color.Color da object, per renderlo un new-style class:

class Color(object): 
    ... 

Questo è non necessario in Python 3.x.

+22

Vale la pena notare che è possibile assegnare alla nuova classe lo stesso nome di quella precedente: 'class color (color):' definisce una nuova classe che sostituisce quella precedente, ma che ne deriva. (Questo sembra essere ciò che l'OP sta cercando di fare.) – kindall

+11

'class extended_color (color):' è di solito uno standard cattivo - 'class ExtendedColor (Color):' dovrebbe essere per le classi. Solo un pisolino – TyrantWave

Problemi correlati