Python - biến truy cập trong lớp khác


1

Tôi có 1 cửa sổ chính và 1 hộp thoại. Bây giờ tôi cần truy cập biến trong cửa sổ chính từ hộp thoại.

Ví dụ trong java chúng ta có 2 lớp: demo và mygroup Trong lớp tôi có mã sau: public static int number = 5; Sau đó, tôi chỉ cần truy cập nó bằng cách sử dụng mygroup.number.

Làm thế nào để làm điều đó trong python bằng cách sử dụng ide nhanh chóng?

Tôi có cần nhập cửa sổ chính trong hộp thoại để có quyền truy cập vào biến tĩnh không?


1
Tôi không biết nhanh là gì nhưng trước hết bạn thường không khai báo một biến công khai trong Java nhưng riêng tư (hoặc được bảo vệ). Thứ hai tôi nghĩ rằng trong python bạn sẽ nhập lớp của tôi trong lớp khác của bạn, sau đó bạn sẽ khởi tạo nó m = mygroup () và có thể truy cập vào nó m.number. Bạn cũng có thể xử lý nó mà không cần khởi tạo. Xem stackoverflow.com/questions/68645/ trên để biết thêm thông tin.
onse

Để làm cho ví dụ đơn giản hơn, tôi đặt công khai: D
user26030

Câu trả lời:


1

Chỉ cần vượt qua ví dụ chính của bạn, một cái gì đó như thế này:

class MyWindow(Gtk.Window):
    def __init__(self):
        # Do your thing...

        self.spam = "spam'n'eggs"

    def on_opendialog_clicked(self, widget):
        dialog = MyDialog(self)
        dialog.run()
        dialog.destroy()

class MyDialog(Gtk.Dialog):
    def __init__(self, mainwindow):
        # ...

        print(mainwindow.spam)

Có một cái nhìn vào câu trả lời của tôi trong câu hỏi này gần như tương tự, chỉ có cách khác.


Lỗi là trên dòng: hộp thoại = MyDialog (tự)
user26030

Tại đây bạn có thể thấy mã được tạo nhanh chóng có thể gây ra lỗi: pastebin.com/68fNcMdD
user26030

Vui lòng cung cấp một truy nguyên thực tế. "Có lẽ" và "lỗi" không giúp được gì.
Timo

Lỗi Loại: Phải là chuỗi, không SampleWindow Ở đây bạn có thể tìm thấy ứng dụng mẫu: ubuntuone.com/5eCaimCkGxOJn1SxUTTh5T
user26030

0

Tôi không chắc đây có phải là cách "pro" để làm điều đó hay không, nhưng bạn có thể chuyển nó cho biến của mình khi bạn tạo nó.

Tôi có một hộp thoại tạo tệp tôi đã xây dựng bằng cách cung cấp cho nó đường dẫn đầu ra mặc định và tên tệp mặc định. Mã của tôi trông giống như: def __init__(self,parent,output_dir,filename)và khi bạn gọi nó, hãy đảm bảo vượt qua nó những gì nó cần, vd.window(output_dir,filename)


Đây là mã của tôi: ubfoxone.com/5eCaimCkGxOJn1SxUTTh5T Tôi không có init
user26030
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.