Tôi đã bắt đầu học python trong vài ngày qua và trong khi khám phá lập trình hướng đối tượng, tôi đang gặp sự cố. Tôi đang sử dụng Eclipse trong khi chạy plugin pydev, đang chạy trên python 3.3 beta và đang sử dụng hệ thống cửa sổ 64 bit.Làm cách nào để mở rộng các lớp khác bằng Python một cách chính xác? (python v3.3)
Tôi có thể khởi tạo lớp và sử dụng bất kỳ phương pháp nào trong đó, miễn là tôi không cố gắng mở rộng lớp cha (mỗi lớp tôi đã mã hóa trong một tệp nguồn khác) Ví dụ: và chạy tốt.
class pythonSuper:
string1 = "hello"
def printS():
print pythonSuper.string1
và mã truy cập và chạy nó ...
from stackoverflow.questions import pythonSuper
class pythonSub:
pysuper = pythonSuper.pythonSuper()
pysuper.printS()
Như tôi đã nói, mà làm việc. Mã sau đây không
class pythonSuper: """Same superclass as above. unmodified, except for the spacing"""
string1 = "hello"
def printS(self):
print(pythonSuper.string1)
Vâng, điều đó không hoàn toàn đúng. Siêu lớp là hoàn toàn tốt, ít nhất là kiến thức của tôi. Đó là lớp con rằng weirds ra
from stackoverflow.questions import pythonSuper
class pythonSub(pythonSuper):
pass
pythonObject = pythonSub()
pythonSub.pythonSuper.printS()
khi lớp con đang chạy Eclipse in ra lỗi này
Traceback (most recent call last):
File "C:\Users\Anish\workspace\Python 3.3\stackoverflow\questions\pythonSub.py",
line 7, in <module>
class pythonSub(pythonSuper):
TypeError: module.__init__() takes at most 2 arguments (3 given)
Tôi không có ý tưởng những gì đang xảy ra. Tôi đã học python từ hướng dẫn của thenewboston, nhưng đó là những lỗi thời (tôi nghĩ mã hướng dẫn của anh ấy sử dụng phiên bản python 2.7). Ông cũng mã hóa trong IDLE, có nghĩa là tất cả các lớp của ông đều có trong một tập tin. Tôi, tuy nhiên, tất cả đều được mã hóa trong các tệp của riêng họ. Điều đó có nghĩa là tôi không biết liệu các lỗi mã tôi nhận được là kết quả của cú pháp lỗi thời hay thiếu hiểu biết về ngôn ngữ này. Nhưng tôi lạc đề. Nếu bất kỳ ai cũng có thể đăng lại bằng giải pháp và/hoặc giải thích lý do mã bị lỗi và tôi có thể làm gì để khắc phục. Một lời giải thích sẽ được ưa thích hơn. Tôi muốn biết những gì tôi đang làm sai vì vậy tôi có thể tránh và khắc phục vấn đề trong các tình huống tương tự hơn là chỉ cần sao chép và dán một số mã và thấy rằng nó hoạt động. Xin cảm ơn và tôi mong được câu trả lời của bạn
cảm ơn, nhưng bây giờ nó đăng lỗi này Traceback (cuộc gọi gần đây nhất cuối cùng): Tệp "C: \ Users \ Anish \ workspace \ Python 3.3 \ stackoverflow \ questions \ pythonSub.py ", line 11, in pythonSub.pythonSuper.printS() AttributeError: loại đối tượng 'pythonSub' không có thuộc tính 'pythonSuper' và tôi không muốn pester bất cứ ai, nhưng bất kỳ lý do gì? –
pipsqueaker117
Tại sao bạn mong đợi pythonSub đang mở rộng pythonSuper, không chứa nó. 'printS' được thừa kế, và bạn truy cập nó trực tiếp thông qua cá thể pythonSub của bạn –
@DanielRoseman Tôi xin lỗi, nó đã bay hơi qua đầu tôi. ngôn ngữ, um, noob (Hoặc bạn có thể liên kết tôi đến một trang nơi tôi có thể tìm hiểu tất cả những thứ này) – pipsqueaker117