Chào mừng trở lại.
Trong video trước, chúng ta đã thấy rằng chúng ta đã thực hiện một số boo lớn.
Đó là, chúng tôi viết quá tên và nói.
Và bây giờ tất cả những công việc khó khăn mà chúng tôi đặt vào lớp học của chúng tôi đã bị ghi đè bởi điều này.
Ý tôi là, chắc chắn, nếu chúng ta khởi tạo một đối tượng mới.
Chúng tôi sẽ chạy và nói, nhưng người chơi một bây giờ hoàn toàn vô dụng.
Nó không có tên và biết nói.
Nó chỉ nói Boo.
Hoàn toàn vô dụng.
Bây giờ trong Python, có ý tưởng về công khai và riêng tư, và điều này liên quan đến cuộc thảo luận của chúng ta về tính trừu tượng.
Ý tưởng đằng sau sự trừu tượng là chúng tôi ẩn thông tin và chỉ cấp quyền truy cập vào những thứ mà
người dùng quan tâm.
Đúng.
Vì vậy, lý tưởng nhất là chúng ta không nên có quyền truy cập vào init.
Tốt nhất, chúng ta không thể, giả sử sửa đổi, chạy hoặc sửa đổi tên và h, bởi vì khi chúng
ta tạo nhân vật người chơi trong trò chơi của mình, hy vọng người chơi có thể thay đổi ngẫu nhiên tên hoặc tuổi của họ.
Và lẻn vào trò chơi của chúng tôi mà có lẽ chỉ từ 18 tuổi trở lên.
Vậy chúng ta có thể tạo một biến private trong lớp của mình không?
Đây là vấn đề.
Một số ngôn ngữ cho phép chúng ta có các biến riêng, ví dụ, trong một ngôn ngữ như Java.
Tôi thực sự có thể nói rằng một thuộc tính là riêng tư như thế này và tôi sẽ không thể truy cập và sửa đổi nó như cách tôi
làm theo cách này.
Nhưng trong Python, không có quyền riêng tư thực sự, không có biến riêng tư thực sự.
Vậy làm cách nào để giải quyết vấn đề này?
Chà, những gì chúng tôi sẽ làm là gạch dưới tên hoặc gạch dưới H.
Hiện nay.
Điều này có cung cấp cho bất kỳ sức mạnh đặc biệt?
Không, đây chỉ là một quy ước mà với tư cách là các lập trình viên, với tư cách là các lập trình viên Python, chúng
tôi đã xác định rằng, này, nếu chúng tôi thấy dấu gạch dưới trong mã của mình, điều đó rất có thể có nghĩa rằng đây phải là một biến riêng.
Vì vậy, khi tôi sử dụng nó và nói, chúng ta hãy gạch dưới tên, gạch dưới H.
Và chúng ta hãy bình luận điều này ra.
Nếu tôi bấm Chạy.
Chà, tôi phải chạy cái này vì bây giờ nó là một phương pháp.
Hãy nhấp vào Chạy.
Và tôi tên là Andre và tôi 100 tuổi.
Tất cả đều hoạt động.
Nhưng nếu tôi cố gắng ghi đè những thứ này và nhấp vào Chạy.
Ồ, và bây giờ vì nó không còn là một phương pháp nữa, chúng ta hãy xóa speak và tôi nhấp vào chạy.
Điều này vẫn hoạt động.
Và đó là bởi vì, như tôi đã nói, không có biến riêng thực sự.
Là lập trình viên, chúng tôi đã quyết định rằng dấu gạch dưới có nghĩa là bạn không nên chạm vào điều này.
Xin đừng chạm vào cái này.
Bạn vẫn có thể tồi tệ và làm điều gì đó như thế này.
Nhưng tôi sẽ cho bạn biết trước nếu bạn gạch dưới điều này không nên được sửa đổi, điều này phải
là riêng tư.
Và đó là cách chúng tôi đạt được quyền riêng tư trong Python.
Tất cả chúng tôi đều đồng ý rằng, này, chúng ta hãy giữ bí mật chuyện nhỏ này.
Vì vậy, nếu bạn muốn giữ một phương thức hoặc một thuộc tính ở chế độ riêng tư, bạn chỉ cần đặt dấu gạch dưới trước nó,
nhưng không có gì đảm bảo.
Còn về init gạch dưới kép này thì sao?
Một lần nữa, đây là điều mà chúng ta sẽ nói trong thời gian ngắn, nhưng nó được gọi là phương pháp mờ.
Đó là, nó được tích hợp vào Python.
Và chúng tôi thường không bao giờ viết các phương thức Dunder của riêng mình.
Chúng tôi sẽ không bao giờ viết hai gạch dưới.
Ghi chép lại cái đó.
Những dấu gạch dưới kép này và có rất nhiều trong số chúng có ý nghĩa đặc biệt trong Python.
Và lý do chúng được đặt tên như vậy là vì chúng đang nói, này, nếu bạn đang viết dấu gạch dưới kép
cho biến của mình, bạn đang làm điều gì đó rất sai.
Bạn sắp ghi đè một cái gì đó.
Vì vậy, một lần nữa, dấu gạch dưới kép này cũng là một quy ước để cho mọi người biết rằng bạn không thực sự
nên chạm vào điều này hoặc sửa đổi điều này với từng loại dữ liệu.
Hãy nói một danh sách.
Nếu tôi chấm, bạn sẽ thấy điều đó khi cuộn xuống.
Bạn có rất nhiều phương pháp kém cỏi này.
Một lần nữa, chúng ta sẽ nói về điều gì đó, nhưng những điều này ở đây để cho bạn biết.
Đừng ghi đè những điều này nếu bạn đang làm điều gì đó như gạch dưới.
Dấu gạch dưới, tôi không biết, bác sĩ, như thế này.
Điều đó thật xấu.
Đừng thử và sửa đổi nó và chỉ định nó cho năm.
Vì vậy, ý tưởng về một trường riêng này rất quan trọng đối với Python.
Và mặc dù chúng ta có thể ghi đè lên rất nhiều thứ, nhưng đó là một cách thực hành không tốt.
Nhưng hãy đưa nó trở lại trừu tượng.
Ý tưởng là trừu tượng hóa mã này và mặc dù nó có thể được sửa đổi và ghi đè bằng cách sử dụng các quy ước thích hợp
này như thuộc tính riêng tư, chúng tôi có thể trừu tượng hóa mọi thứ, nhưng vẫn đảm bảo rằng bất cứ điều
gì người dùng có thể đang sử dụng sẽ không thành công để phá mã của chúng tôi.
Hẹn gặp lại các bạn trong phần tiếp theo.
Tạm biệt.