Tôi đến từ thế giới Java và đọc các mô hình, công thức và thành ngữ Python 3 của Bruce Eckels .
Trong khi đọc về các lớp, nó tiếp tục nói rằng trong Python không cần phải khai báo các biến thể hiện. Bạn chỉ cần sử dụng chúng trong constructor, và boom, chúng ở đó.
Ví dụ:
class Simple:
def __init__(self, s):
print("inside the simple constructor")
self.s = s
def show(self):
print(self.s)
def showMsg(self, msg):
print(msg + ':', self.show())
Nếu đó là sự thật, thì bất kỳ đối tượng nào của lớp Simple
chỉ có thể thay đổi giá trị của biến s
bên ngoài lớp.
Ví dụ:
if __name__ == "__main__":
x = Simple("constructor argument")
x.s = "test15" # this changes the value
x.show()
x.showMsg("A message")
Trong Java, chúng tôi đã được dạy về các biến công khai / riêng tư / được bảo vệ. Những từ khóa này có ý nghĩa bởi vì đôi khi bạn muốn các biến trong một lớp mà không ai bên ngoài lớp có quyền truy cập.
Tại sao điều đó không bắt buộc trong Python?