2013-03-20 63 views
55

Trong python, bạn có thể mở rộng lớp như thế nào? Ví dụ nếu tôi cóLàm thế nào để mở rộng một lớp trong 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!" 

Nhưng điều này không làm việc ... Tôi hy vọng rằng nếu tôi làm việc trong color_extended.py, sau đó khi Tôi tạo một đối tượng màu và sử dụng hàm getcolor sau đó nó sẽ trả về đối tượng bằng chuỗi "mở rộng!" đến cuối cùng. Ngoài ra nó nên có gotton init từ nhập khẩu.

Giả python 3.1

Cảm ơn

+1

Bạn đã cố đọc tài liệu chưa? http://docs.python.org/2.7/tutorial/classes.html#inheritance – wRAR

+0

các lớp phải có chữ hoa đầu tiên viết hoa ("Màu" không phải là "màu");) – daveoncode

+3

@wRAR Có thể trong năm 2013 đây là một câu hỏi hợp lý, nhưng hãy trung thực - mọi người chuyển sang StackOverflow trước, vì vậy đây là một câu hỏi hay về SO. Câu hỏi này là hit google đầu tiên cho "python extend class", tài liệu thứ ba. –

Trả lời

58

Sử dụng:

import color 

class Color(color.Color): 
    ... 

Nếu đây là Python 2.x, bạn cũng sẽ muốn lấy được color.Color từ object, để làm cho nó một new-style class:

class Color(object): 
    ... 

Đây là không cần thiết trong Python 3.x.

+22

Điều đáng lưu ý là bạn có thể đặt cho lớp mới cùng tên với lớp cũ: 'lớp màu (màu):' định nghĩa một lớp mới thay thế lớp cũ, nhưng nó bắt nguồn từ nó. (Điều này có vẻ là những gì OP đang cố gắng làm.) – kindall

+11

'class extended_color (color):' là tiêu chuẩn xấu thường - 'class ExtendedColor (Color):' nên cho các lớp. Chỉ cần một nitpick – TyrantWave

Các vấn đề liên quan