Hàm dir() trong Python

Trong Python, hàm dir() trả về một danh sách các thuộc tính hợp lệ của đối tượng. Quantrimang sẽ tìm hiểu kĩ hơn về nội dung hàm này qua bài viết. Mời bạn đọc theo dõi.

Cú pháp hàm dir() trong Python

dir([object])

Các tham số của hàm dir()

Dir() chỉ trả về kết quả cho một đối tượng.

object: đối tượng được dir() trả về danh sách thuộc tính, tham số không bắt buộc.

Giá trị trả về từ dir()

Dir() sẽ trả về một danh sách các thuộc tính hợp lệ của đối tượng.

Nếu đối tượng có hàm __dir__() thì khi gọi dir sẽ trả về đầy đủ các thuộc tính.

Nếu đối tượng không có __dir__() thì hàm sẽ cố gắng tìm thông qua __dict__() (nếu có). Trong trường hợp này, danh sách thuộc tính trả về từ dir() có thể không đầy đủ.

Nếu không truyền object vào dir() thì sẽ trả về thuộc tính trong phạm vi cục bộ hiện tại.

Ví dụ 1: Hàm dir() hoạt động thế nào?

number = [1, 2, 3]
print(dir(number))
 
print('\nGia tri tra ve tu dir() khong truyen object')
print(dir())

Chạy chương trình, kết quả trả về là:

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',
'__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append',
'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']


Gia tri tra ve tu dir() khong truyen object
['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__',
'__spec__', 'number']
 

Ví dụ 2: dir() với object do người dùng định nghĩa

class Person:
def __dir__(self):
return ['age', 'name', 'salary']

teacher = Person()
print(dir(teacher))

Chạy chương trình, kết quả trả về là:

['age', 'name', 'salary']

Bài trước: Hàm dict() trong Python

Bài tiếp: Hàm divmod() trong Python

Thứ Bảy, 15/12/2018 11:25
53 👨 127