01/10/2018, 10:19
Hỏi về tham số __str__ và __eq__
Mọi người cho mình hỏi hai tham số str và eq có tác dụng gì vậy . Đây là 1 module về vector mình đang đọc mà ko hiểu 2 cái tham số đó có tác dụng gì
Bài liên quan
def
là definition dùng để khai báo 1 hàm,__str__
và__eq__
chỉ là tên hàm, nếu bạn có thắc mắc vì sao có__
trước tên thì đó là để khai báo private. Bạn có thể tham khảo thêm ở link này: https://stackoverflow.com/questions/1641219/does-python-have-private-variables-in-classesý mình là 2 cái tham số đó có tác dụng gì á. Nếu bỏ nó ra kết quả có thay đổi gì ko.
soucre code : https://storage.googleapis.com/supplemental_media/udacityu/4467878620/vector.py
Cái này là
class
…Chết không chứ lị, lại thêm 1 người nữa coi def là hàm và xâu bên cạnh def là tham số Học hành thế đấy
[spoiler]Về học lại cơ bản Python đi trước khi mình đến chỗ bạn và cho bạn một trận [/spoiler]
str
vàeq
là HÀM bạn nhé.Trong trường hợp này thì 2 hàm
str
vàeq
đều là public vì có __ ở trước và sau tên hàm.Trong Python có các phương thức đặc biệt (như cái
__init__
đó), và chúng ta có thể ghi đè lên. Thử đoạn code sau coi bạn đoán thử chức năng nó là gì nhé:Thôi để mình nói luôn cho khỏi dài dòng: nó implement
str()
và toán tử==
.Khi print instance của class, thay vì
<__main__.JustTest instance at 0x0423C5D0>
thì nó lại in ra thứ như trong method__str__()
kia.Khi so sánh thì nó in thêm ra dòng
comparing...
nữa kìa, tức là nó thực thi method__eq__()
để chắc chắn hơn, bạn thử xóa dòng cuối trong method__eq__()
và thay bằngreturn False
xem, và so sánh 2 instance có giá trị bằng nhau xem.@masterq1997 cái em gởi là biến nhé, còn này là phương thức
P/s:
phương_thức not in (hàm, tham_số, lệnh)