Kiểm tra xem đối tượng có thuộc tính Python không

Hàm lấy đối tượng, tên của thuộc tính và giá trị mặc định khi thuộc tính không tồn tại trên đối tượng làm tham số

Chúng tôi đã sử dụng

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
6 làm giá trị mặc định khi thuộc tính không tồn tại

Bước cuối cùng là sử dụng hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
7 để kiểm tra xem thuộc tính có phải là một phương thức hay không

Hàm có thể gọi được lấy một đối tượng làm đối số và trả về

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
8 nếu đối tượng có vẻ có thể gọi được, nếu không thì trả về
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
9

Nếu thuộc tính được chỉ định tồn tại trên đối tượng và thuộc tính có thể gọi được, chúng ta có thể giả định rằng đó là một phương thức một cách an toàn

Ngoài ra, bạn có thể sử dụng hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
0

Kiểm tra xem một đối tượng có Phương thức cụ thể hay không bằng cách sử dụng hasattr[] #

Để kiểm tra xem một đối tượng có một phương thức cụ thể hay không

  1. Sử dụng hàm
    class Cake:
        best_cake = "Choco Lava"
        best_flavor = "Vanilla"
        cost = 2500
        
    cake_object = Cake[]
    print[hasattr[Cake, 'best_cake']]
    
    0 để kiểm tra xem thuộc tính có tồn tại trên đối tượng không
  2. Sử dụng hàm
    class Cake:
        best_cake = "Choco Lava"
        best_flavor = "Vanilla"
        cost = 2500
        
    cake_object = Cake[]
    print[hasattr[Cake, 'best_cake']]
    
    7 để kiểm tra xem thuộc tính có thể gọi được không
  3. Nếu cả hai điều kiện được đáp ứng, đối tượng có phương thức được chỉ định

Hàm hasattr nhận 2 tham số sau

TênMô tả
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
32Đối tượng chúng ta muốn kiểm tra sự tồn tại của thuộc tính
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
33Tên của thuộc tính cần kiểm tra trong đối tượng

Hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
0 trả về
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
8 nếu chuỗi là tên của một trong các thuộc tính của đối tượng, nếu không thì trả về `False`

Chúng tôi đã sử dụng toán tử boolean

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
36, vì vậy để khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
37 chạy cả hai điều kiện phải được đáp ứng

Đối tượng phải có thuộc tính được chỉ định và thuộc tính phải có thể gọi được

Nếu bạn sử dụng câu lệnh

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
38, bạn sẽ chỉ kiểm tra xem thuộc tính có tồn tại trên đối tượng hay không, chứ không phải thuộc tính có thể gọi được không

class Employee[]:
    def __init__[self, first, last]:
        self.first = first
        self.last = last

    def get_name[self]:
        return f'{self.first} {self.last}'


emp1 = Employee['bobby', 'hadz']

try:
    result = emp1.get_name[]
except AttributeError:
    print['The attribute does NOT exist']

Nếu thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
0 không tồn tại trên đối tượng, một
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
70 sẽ được nâng lên và khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
71 sẽ chạy

Tuy nhiên, thuộc tính có thể tồn tại trên đối tượng và không thể gọi được, trong trường hợp đó,

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
72 được nâng lên

Hai cách tiếp cận trước đó trực tiếp và rõ ràng hơn và thực hiện tốt hơn việc kiểm tra xem một đối tượng có một phương thức cụ thể hay không

Mỗi lớp có các phương thức và thuộc tính có thể được gọi là thuộc tính. Một đối tượng có thể mang các thuộc tính của một lớp và mỗi đối tượng cũng có thể có thuộc tính của nó. Biết những thuộc tính mà một đối tượng có, là cần thiết

Không thể kiểm tra các thuộc tính trong một đối tượng theo cách thủ công trong các đoạn mã lớn. Bài viết này sẽ chỉ ra các cách khác nhau để kiểm tra các thuộc tính của một đối tượng

Kiểm tra các thuộc tính bằng phương thức
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 trong Python

Hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 kiểm tra một đối tượng xem nó có thuộc tính cụ thể hay không. Nếu hàm tìm thấy thuộc tính, nó sẽ trả về
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
3;

cú pháp

hasattr[object_name, attribute_name]

Có hai tham số cho chức năng này - tên của

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
5 và
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
6 mà chúng tôi muốn kiểm tra. Hàm cho kết quả là Boolean
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
3 hoặc
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
4 tùy thuộc vào việc nó có tìm thấy thuộc tính hay không

Giả sử chúng ta có một lớp tên là

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
9. Chúng tôi xác định ba thuộc tính bên trong lớp này -
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
10,
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
11 và
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
12. Sau đó, chúng ta tạo
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
13 làm đối tượng của lớp này

Bây giờ, để kiểm tra xem đối tượng này có thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
10 hay không, chúng ta sử dụng phương thức
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1. Truyền tên của lớp và thuộc tính này làm đối số trong hàm này

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]

đầu ra

Vì thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
10 thuộc về đối tượng,
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
13, nên chúng tôi nhận được kết quả là
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
18

Bây giờ hãy xem điều gì sẽ xảy ra nếu chúng ta chuyển

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
19 làm tên thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1

đầu ra

Vì thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
19 không tồn tại, nên chúng tôi lấy
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
41 làm đầu ra

Sử dụng hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
43 trong Python

Một cách nữa là sử dụng chức năng

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 là sử dụng nó với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
45. Hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 trả về
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
3 khi có thuộc tính

Do đó, khối

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
48 thực thi và in ra giá trị của thuộc tính. Nhưng nếu không có thuộc tính, thì giá trị trả về sẽ là
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
4 và khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
30 được thực thi

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
4

đầu ra

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
3

Chúng tôi tìm kiếm thuộc tính bên trong khối

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
48. Vì không có thuộc tính nên hàm trả về
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
4 và nhập khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
30. Bên trong khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
30, chúng tôi chỉ định một câu lệnh in đơn giản được in làm đầu ra

Kiểm tra các thuộc tính bằng hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 trong Python

Hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 trả về giá trị mặc định khi không có thuộc tính. Hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 hoạt động giống như hàm trước

cú pháp

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
3

Hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 nhận ba đối số - đối tượng, thuộc tính và giá trị mặc định cho các trường hợp khi thuộc tính không tồn tại

Giả sử, chúng ta phải tìm thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
19 cho đối tượng
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
13. Không chỉ định đối số mặc định, hãy sử dụng hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
8

đầu ra

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
9

Hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 đưa ra một ngoại lệ ở đây

Bây giờ, chúng ta hãy chỉ định một đối số mặc định sẽ được in khi không có thuộc tính. Đối số mặc định này có thể là một thông báo đơn giản

hasattr[object_name, attribute_name]
1

đầu ra

Chúng tôi nhận được thông báo từ đối số mặc định thay vì bất kỳ ngoại lệ hoặc lỗi nào

Sử dụng hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
33 với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
34

Có một cách khác để sử dụng hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35. Sử dụng khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
36 để kiểm tra sự hiện diện của một thuộc tính. Ý tưởng là bao gồm chức năng
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 bên trong khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
38

Nếu có thuộc tính, chúng tôi sẽ in giá trị của nó. Nếu không,

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
39 sẽ bị ném. Chúng tôi có thể xử lý ngoại lệ này trong khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
80 và in thông báo lỗi bằng câu lệnh in

Chúng tôi tìm kiếm thuộc tính

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
19 bên trong khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
38 trong ví dụ này. Chúng tôi không chỉ định đối số mặc định bên trong hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35

Đó là bởi vì chúng tôi xử lý lỗi bên trong khối

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
84

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
4

đầu ra

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
0

Chúng ta không thể sử dụng hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
36 như hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35. Điều này là do hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 trả về giá trị Boolean chứ không phải ngoại lệ

để tóm tắt

Chúng tôi đã thảo luận về việc tìm kiếm nếu một thuộc tính có trong một đối tượng trong Python. Chúng tôi đã sử dụng hai chức năng -

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 và
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 để đạt được điều này

Chúng ta đã học cách kết hợp hàm

class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
1 với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
45 và hàm
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
35 với khối
class Cake:
    best_cake = "Choco Lava"
    best_flavor = "Vanilla"
    cost = 2500
    
cake_object = Cake[]
print[hasattr[Cake, 'best_cake']]
94

Chủ Đề