Vì vậy ... Tôi đang cố gắng chuyển từ Python cơ bản sang một số chương trình GUI, sử dụng PyQt4. Tôi đang xem một vài cuốn sách và hướng dẫn khác nhau, và chúng dường như có một cách khác nhau để bắt đầu định nghĩa lớp.Các cách khác nhau để sử dụng __init__ cho PyQt4
Một hướng dẫn bắt đầu ra khỏi lớp học như vậy:
class Example(QtGui.QDialog):
def __init__(self):
super(Example, self).__init__()
cuốn sách khác thực hiện nó như thế này:
class Example(QtGui.QDialog):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
Tuy nhiên khác thì nó theo cách này:
class Example(QtGui.QDialog):
def__init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
tôi vẫn đang cố gắng để bọc tâm trí của tôi xung quanh các lớp học và OOP và super()
và tất cả ... tôi có đúng trong suy nghĩ rằng dòng cuối cùng của ví dụ thứ ba hoàn thành nhiều hay ít điều tương tự như các cuộc gọi bằng cách sử dụng super()
trong các ví dụ trước, bằng cách gọi trực tiếp lớp cơ sở một cách rõ ràng? Đối với các ví dụ tương đối đơn giản như thế này, tức là thừa kế đơn lẻ, có bất kỳ lợi ích thực sự hoặc lý do nào để sử dụng một cách so với cách khác hay không? Cuối cùng ... ví dụ thứ hai chuyển số parent
làm đối số cho super()
trong khi đầu tiên không ... bất kỳ phỏng đoán/giải thích nào về lý do tại sao/khi nào/ở đâu thích hợp?
Bạn là * typer trả lời nhanh * cách trước tôi – Hubro
@Codemonkey 7 phút sau khi câu hỏi được hỏi, không * nhanh *. :) – Dougal