Tìm thuộc tính của đối tượng Python
Nếu điều này là không đủ, có những chức năng khác mà bạn có thể gọi trên một đối tượng để có được thông tin cụ thể hơn về đối tượng
Trong hướng dẫn này, chúng ta sẽ xem xét kỹ hơn từng hàm tích hợp này để giúp khám phá các đối tượng Python dễ dàng nhất có thể Trước khi chúng ta bắt đầuTrước khi chúng tôi bắt đầu sử dụng các chức năng trên, chúng tôi cần một đối tượng mà chúng tôi có thể kiểm tra. Đối tượng này có thể là bất kỳ đối tượng nào trong Python Để đơn giản, bạn sẽ sử dụng một lớp ví dụ đơn giản và đối tượng của nó trong suốt hướng dẫn này Đây là lớp học class Weight: """ A Weight class that describes weights as kilos. """ def __init__(self, kilos): """ Assign the amount of kilos to the Weight object """ self.kilos = kilos def topounds(self): """ Convert the kilos to pounds. 1 kilo = 2.2048 pounds """ return self.kilos * 2.2048 Xuyên suốt hướng dẫn này, bạn sẽ làm việc với lớp này hoặc các đối tượng được tạo từ nó Cứu giúp()Hàm help() tích hợp sẵn hiển thị thông tin hữu ích về đối tượng được truyền dưới dạng đối số Bạn có thể gọi help() trên các mô-đun, hàm, lớp, biến, v.v. Hãy xem cách triển khai lớp Trọng lượng trong chương trước. Bạn thấy ba bình luận trong dấu ngoặc kép khắp lớp. Trên thực tế, đây không phải là những bình luận. Thay vào đó, chúng được gọi là docstrings Chuỗi tài liệu là một phần tài liệu được chọn bởi hàm help(). Hàm help() hiển thị chuỗi tài liệu này trong bảng điều khiển để giúp nhà phát triển nhanh chóng xem đối tượng là gì. Nhân tiện, để mô tả một đối tượng bằng một chuỗi tài liệu, bạn cần chỉ định nó ở dòng đầu tiên sau định nghĩa Ví dụ, hãy gọi help() trên phương thức topounds() của lớp Weight help(Weight.topounds) đầu ra Help on function topounds in module __main__: topounds(self) Convert the kilos to pounds. 1 kilo = 2.2048 pounds Điều này sẽ hiển thị chuỗi tài liệu bạn đã chỉ định ở phần đầu của định nghĩa phương thức topounds() Bây giờ bạn đã hiểu hàm help() làm gì, hãy gọi nó trên toàn bộ lớp Trọng lượng help(Weight) đầu ra Help on class Weight in module __main__: class Weight(builtins.object) | Weight(kilos) | | A Weight class that describes weights as kilos. | | Methods defined here: | | __init__(self, kilos) | Assign the amount of kilos to the Weight object | | topounds(self) | Convert the kilos to pounds. | 1 kilo = 2.2048 pounds | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ --More-- Ở đây bạn có thể thấy mọi thứ liên quan đến lớp học. Đầu tiên, bạn thấy các tài liệu bạn đã viết vào lớp. Sau đó, bạn thấy một loạt tài liệu được tạo tự động liên quan đến các thuộc tính của lớp Dù sao thì bây giờ bạn đã hiểu khá rõ về cách thức hoạt động của hàm help() trong Python. Hãy nhớ rằng, bạn có thể gọi hàm này trên bất kỳ đối tượng Python nào để tham khảo nhanh Ví dụ: bạn có thể gọi nó trực tiếp trên đối tượng Trọng lượng thay vì lớp Trọng lượng w1 = Weight(100) help(w1) Điều này dẫn đến kết quả giống như trợ giúp (Trọng lượng) loại()Trong Python, bạn có thể lấy thông tin kiểu về một đối tượng bằng hàm type() tích hợp Theo thông tin loại, ý tôi là thông tin về lớp thực hiện đối tượng Hãy sử dụng ví dụ lớp Weight được xác định trước đó để minh họa cách thức hoạt động của hàm type() w1 = Weight(100) print(type(w1)) đầu ra Điều này cho bạn biết đối tượng w1 thuộc loại Trọng lượng Bây giờ, bạn có thể sử dụng hàm type() để kiểm tra loại của bất kỳ thứ gì Ví dụ: hãy kiểm tra loại chuỗi Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)0 đầu ra Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)1 Điều này cho bạn biết rằng từ đó thuộc loại str, đây thực sự là loại tích hợp đại diện cho các chuỗi Python Đôi khi bạn thấy type() được gọi với ba đối số. Điều này không liên quan gì đến hàm type(). Thay vào đó, nó là loại lớp được sử dụng trong siêu lập trình. Nếu bạn quan tâm, hãy kiểm tra bài viết này dir()Để liệt kê tất cả các thuộc tính của một đối tượng, hãy sử dụng hàm dir() tích hợp Nó trả về một danh sách dài các tên thuộc tính, nghĩa là tên phương thức và tên biến của đối tượng Ví dụ: hãy tạo một đối tượng Trọng lượng và liệt kê các thuộc tính của nó Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)2 đầu ra Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)3 Có một loạt các thuộc tính được tạo tự động trong bất kỳ lớp Python nào. Chúng được liệt kê đầu tiên khi gọi hàm dir() Nhưng hãy nhìn vào cuối danh sách. Ở đó, bạn có thể thấy các thuộc tính 'kilos' và 'topounds' mà chúng tôi đã triển khai trong lớp. Ngoài ra, bạn cũng có thể tìm thấy '__init__' được đề cập ở giữa danh sách Một lần nữa, bạn có thể gọi hàm dir() trên bất kỳ đối tượng Python nào Ví dụ: hãy nhập mô-đun toán học và liệt kê tất cả các phương thức mà nó có Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)4 đầu ra Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)5 Nếu bạn nhìn vào các tên không có __, bạn sẽ thấy một số tên biến/phương thức quen thuộc ở đó. Đây là tất cả các biến và phương thức thuộc về mô-đun toán học Tôi()Trong Python, mỗi đối tượng có một danh tính. Danh tính là một giá trị số nguyên không đổi trong suốt thời gian tồn tại của đối tượng Để truy cập ID bất kỳ đối tượng Python nào, bạn có thể gọi hàm id() tích hợp trên đó Chẳng hạn, hãy tạo một đối tượng Trọng lượng và kiểm tra danh tính của nó Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)6 đầu ra Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)7 Thao tác này có thể hữu ích để kiểm tra xem hai đối tượng có giống nhau không. Nếu danh tính của hai đối tượng khớp nhau, điều đó có nghĩa là cả hai đều tham chiếu đến cùng một đối tượng trong bộ nhớ, mỗi đối tượng có một bí danh khác nhau Ví dụ: hãy tạo hai đối tượng Trọng lượng w1 và w2 sao cho w2 được đặt bằng w1 Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)8 Điều xảy ra đằng sau hậu trường là cả w1 và w2 đều trỏ đến cùng một đối tượng Trọng lượng (100) trong bộ nhớ Đây là một minh họa Nói cách khác, cả w1 và w2 bây giờ sẽ có cùng một ID khi chúng trỏ đến cùng một đối tượng trong bộ nhớ Hãy kiểm tra xem đây có phải là trường hợp không Help on built-in function sqrt in module math: sqrt(...) sqrt(x) Return the square root of x. (END)9 đầu ra class Weight: """ A Weight class that describes weights as kilos. """ def __init__(self, kilos): """ Assign the amount of kilos to the Weight object """ self.kilos = kilos def topounds(self): """ Convert the kilos to pounds. 1 kilo = 2.2048 pounds """ return self.kilos * 2.20480 Các ID khớp nhau, vì vậy các đối tượng w1 và w2 là cùng một đối tượng Cũng như các chức năng trước, bạn cũng có thể gọi id() trên bất kỳ đối tượng Python nào để kiểm tra danh tính của nó hasattr()Phương thức hasattr() có thể được sử dụng để kiểm tra xem một đối tượng có thuộc tính cụ thể hay không Cú pháp như sau class Weight: """ A Weight class that describes weights as kilos. """ def __init__(self, kilos): """ Assign the amount of kilos to the Weight object """ self.kilos = kilos def topounds(self): """ Convert the kilos to pounds. 1 kilo = 2.2048 pounds """ return self.kilos * 2.20481 Ở đâu
Hàm này trả về True nếu thuộc tính tồn tại và Sai nếu không Chẳng hạn, hãy kiểm tra xem lớp Weight mà bạn đã triển khai trước đó có một thuộc tính gọi là topounds hay không class Weight: """ A Weight class that describes weights as kilos. """ def __init__(self, kilos): """ Assign the amount of kilos to the Weight object """ self.kilos = kilos def topounds(self): """ Convert the kilos to pounds. 1 kilo = 2.2048 pounds """ return self.kilos * 2.20482 đầu ra class Weight: """ A Weight class that describes weights as kilos. """ def __init__(self, kilos): """ Assign the amount of kilos to the Weight object """ self.kilos = kilos def topounds(self): """ Convert the kilos to pounds. 1 kilo = 2.2048 pounds """ return self.kilos * 2.20483 Bạn có thể gọi hàm này trên bất kỳ đối tượng Python nào để xem có thuộc tính nào có tên cụ thể không Ví dụ: hãy kiểm tra xem các thuộc tính kilos và topounds có thể gọi được trong lớp Trọng lượng mà bạn đã triển khai trước đó không |