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ònattribute
thì không. Do đó function hoặc method phải có ngoặc()
. Còn attribute không phải làcallable
nên không có ngoặc.Nhưng, một attribute có thể là một method của một lớp
Thì
name
chính làattribute
, không phảimethod
Cả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
getattr
Mình đã đề cập,
function hay là method
trongclass
là 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