Làm thế nào để bạn truy cập các biến từ một lớp từ một lớp khác trong python?
Tôi có một lớp chính (QMainWindow) với 2 chức năng (Tôi chạy các chức năng ở đây vì tôi cần sử dụng/gọi QLabels, QLineEdit. văn bản (), v.v. ) Hàm có tên “initialDF” tải xuống một khung dữ liệu từ web và “chơi” với nó, cuối cùng hàm nhận được một biến có tên "Kiểm tra " và một khung dữ liệu cuối cùng có tên là “Dữ liệu”. Chức năng được gọi là “bucleDF” biến “Dữ liệu” Show Tôi cần sử dụng "Kiểm tra " làm trình xác thực While trong một lớp khác (QObject) chạy QThread của tôi và tôi cần gọi “Dữ liệu” trong vòng lặp While để “cập nhật” trình xác thực gọi “Kiểm tra” Chúng tôi có một lớp gọi là 2, kế thừa từ một lớp khác, 3 (nằm trong mô-đun 4 trong thư viện chuẩn của Python)
Cách chúng tôi biết chúng tôi đang kế thừa từ lớp 3 bởi vì khi chúng tôi định nghĩa 2, ngay sau tên lớp, chúng tôi đặt dấu ngoặc đơn và viết 3 bên trong chúngĐể tạo một lớp kế thừa từ một lớp khác, sau tên lớp bạn sẽ đặt dấu ngoặc đơn và sau đó liệt kê bất kỳ lớp nào mà lớp của bạn kế thừa từ đó Trong định nghĩa hàm, dấu ngoặc đơn sau tên hàm biểu thị các đối số mà hàm chấp nhận. Trong một định nghĩa lớp, dấu ngoặc đơn sau tên lớp thay vì đại diện cho các lớp được kế thừa từ Thông thường khi thực hành kế thừa lớp trong Python, chúng ta chỉ kế thừa từ một lớp. Bạn có thể kế thừa từ nhiều lớp (gọi là đa kế thừa), nhưng hơi hiếm. Chúng ta sẽ chỉ thảo luận về kế thừa một lớp ngay bây giờ Các phương thức được kế thừa từ các lớp chaĐể sử dụng lớp 2 của chúng ta, chúng ta có thể gọi nó (giống như bất kỳ lớp nào khác)
Lớp của chúng tôi sẽ chấp nhận một chuỗi khi chúng tôi gọi nó vì lớp 3 đã triển khai phương thức 00 (phương thức khởi tạo)Lớp của chúng tôi cũng có phương thức 01 để biểu diễn chuỗi đẹp 0Nó thậm chí còn có một loạt các chức năng khác. Ví dụ: nó đã ghi đè điều xảy ra khi bạn sử dụng dấu ngoặc vuông để gán các cặp khóa-giá trị trên các thể hiện của lớp 3Chúng ta có thể gán các cặp khóa-giá trị vì lớp cha của chúng ta, 3 tạo các đối tượng giống như từ điển (a. k. a. )Tất cả các chức năng đó được kế thừa từ lớp 3Thêm chức năng mới trong khi kế thừaVì vậy, lớp 2 của chúng ta đã kế thừa tất cả các chức năng mà lớp 3 của chúng ta có nhưng chúng ta cũng đã mở rộng nó bằng cách thêm một phương thức bổ sung, 06, phương thức này sẽ cung cấp cho chúng ta mục phổ biến nhất trong lớp của chúng taKhi chúng ta gọi phương thức 06, chúng ta sẽ nhận được chữ cái 08 (xảy ra ba lần trong chuỗi ban đầu chúng ta đã cung cấp cho đối tượng 2 của mình) 2Phương thức 06 của chúng ta dựa trên phương thức 31, mà chúng ta không định nghĩa nhưng lớp cha của chúng ta, 3, đã định nghĩa 6Lớp 2 của chúng ta có một phương thức 34 bởi vì lớp cha của chúng ta, 3 đã định nghĩa nó cho chúng taGhi đè các phương thức kế thừaNếu chúng ta muốn tùy chỉnh điều gì sẽ xảy ra khi gán cho một cặp khóa-giá trị trong lớp này, chúng ta có thể làm điều đó bằng cách ghi đè phương thức 36. Ví dụ: hãy tạo nó sao cho nếu chúng ta gán một khóa cho một giá trị âm, thay vào đó, nó sẽ gán nó cho 37Trước đây khi chúng tôi chỉ định 38 cho 39, chúng tôi muốn nó được đặt thành 37 thay vì 39 (ở đây là 39 vì chúng tôi chưa tùy chỉnh cái này) 7Để tùy chỉnh hành vi này, chúng tôi sẽ tạo một phương thức 36 chấp nhận 24, 25 và 26 bởi vì đó là những gì 36 được cung cấp bởi Python khi nó được gọi 3Phương pháp 36 ở trên về cơ bản nói. nếu 26 là số âm, hãy đặt nó thành 37Nếu chúng tôi ngừng viết 36 vào thời điểm này, nó sẽ không hữu ích lắm. Trên thực tế, phương pháp 36 sẽ không làm được gì cả. nó sẽ không báo lỗi, nhưng nó cũng không thực sự làm gì cảĐể làm điều gì đó hữu ích, chúng ta cần gọi phương thức 36 của lớp cha. Chúng ta có thể gọi phương thức 36 của lớp cha bằng cách sử dụng 65 2Chúng ta đang gọi 66, phương thức này sẽ gọi phương thức 36 trên lớp cha của chúng ta ( 3) với 25 và lớp không âm mới của chúng ta là 26Đây là triển khai đầy đủ của phiên bản mới này của lớp 2 của chúng tôi 9Để sử dụng lớp này, chúng ta sẽ gọi nó và truyền lại một chuỗi
Nhưng lần này, nếu chúng ta gán một khóa cho một giá trị âm, chúng ta sẽ thấy rằng nó sẽ được gán cho 37 thay thế 1Bài tập lớp cho người mới bắt đầu nâng caoBạn muốn thực hành thêm với các lớp trong Python? Lộ trình tập Diving Into Classes bao gồm 6 bài tập dành cho người mới bắt đầu nâng cao. Python Morsels cũng bao gồm hàng chục bài tập khác về các lớp và Python hướng đối tượng. |