01/10/2018, 10:52
Hỏi về class, attribute, method trong Python
Mình có 1 thắc mắc như sau. Giả sử bắt đầu với 1 thư viện cơ bản như “string” mình print ra dictionary của nó như hình

Theo mình hiểu các kí hiệu “__”(gạch 2 chân dưới) là class, thế kí hiệu “_”(gạch 1 chân) ám chỉ gì vậy(mình nhớ có đọc qua rồi mà quên).
Các cái còn lại là function ,method hoặc attribute. Làm thế nào để mình phân biệt được đâu là function hay method. Mình hay bị nhầm lẫn vd như đối tượng x nào đó có method Formatter thì viết là x.Formatter hay x.Formatter() ( chẳng hạn như x là 1 dataframe thì shape là x.shape, còn xem mấy dòng đầu là x.head() làm sao phân biệt dc khi nào có dấu ngoặc khi nào k)
Mong các bạn giúp đỡ mình mới học nên hơi k rõ về vẫn đề này.
Bài liên quan





Nó là
Special (Magic/Dunder) Methods.Function là một hàm, Method là một function của một lớp.
Đó gọi là function (method) thì là
callable, cònattributethì không. Do đó function hoặc method phải có ngoặc(). Còn attribute không phải làcallablenên không có ngoặc.Nhưng, một attribute có thể là một method của một lớp
Thì
namechính làattribute, không phảimethodCảm ơn bạn rất nhiều. Cho mình hỏi là khi mà dùng lệnh print(dir(string)) chẳng hạn có rất nhiều function, method và attribute trong đó. Có thể phân biệt dc đâu function, method và attribute ( ý là có ranh giớ nào để nhìn là biết là function, method và attribute mà ko cần thử k hay phải đọc tài liệu về library đó )
Hãy tưởng tượng ta có class như sau
Tiếp đến ta dùng hàm
getattrMình đã đề cập,
function hay là methodtrongclasslà những thứcallable.Nhưng có thể bạn vẫn sẽ không được kết quả mong muốn, vì một lớp mặc định của Python không chỉ có chừng đấy
method. Thế nên bạn có thể thêm một chút thế nàyTất cả những thứ trên có thể rút gọn
Cảm ơn bạn rất nhiều