Hướng dẫn hasattr and getattr in python - hasattr và getattr trong python

Việc sử dụng duy nhất của hàm python getAttr () là lấy giá trị của thuộc tính đối tượng và nếu không tìm thấy thuộc tính nào của đối tượng đó, giá trị mặc định được trả về.getattr() function is to get the value of an object’s attribute and if no attribute of that object is found, default value is returned.

Về cơ bản, trả về giá trị mặc định là lý do chính mà bạn nên sử dụng hàm getAttr (). Hàm getAttr () chấp nhận nhiều tham số.

Cú pháp: getattr (object, usulute_name [, mặc định]) ở đâu,getattr(object, attribute_name [, default]) where,

Đối tượng - Đối tượng của lớp có giá trị thuộc tính sẽ được trả về.

Thuộc tính_name - Tên thuộc tính.

Mặc định (tùy chọn) - Giá trị được trả về khi không tìm thấy thuộc tính.

Nếu thuộc tính_name được chuyển đến getAttr () không được tìm thấy hoặc có sẵn trong lớp, giá trị mặc định sẽ vào hình ảnh.

Điều này cho phép chúng tôi hoàn thành một số dữ liệu không đầy đủ của chúng tôi và hoàn thành việc thực hiện chương trình mà không có bất kỳ lỗi nào. Hãy cho chúng tôi xem một ví dụ-

Tương tự, chúng ta có một cái gì đó để đặt các giá trị thuộc tính của một đối tượng, setAttr ().setattr().

Cú pháp: SetAttr (đối tượng, tên, giá trị) ở đâu,setattr(object, name, value) where,

Đối tượng - đối tượng có thuộc tính phải được đặt.

Thuộc tính_name - Tên thuộc tính mà chúng ta cần đặt giá trị.

thuộc tính_value - giá trị của thuộc tính được đặt.

Hãy cho chúng tôi xem một ví dụ-

Bạn cũng có thể đặt một thuộc tính và giá trị của nó bằng hàm setAttr (), ngay cả khi nó không có trong lớp hiện tại, tuy nhiên nó là đối tượng cụ thể. Trong ví dụ dưới đây, chúng tôi đang cố gắng đặt một thuộc tính mới cho đối tượng ‘emp_name, từ bên ngoài lớp.

Có một chức năng sẵn có để kiểm tra xem đối tượng có hiện tại ATRIBUTE hay không. Nó trả về true nếu một đối tượng có thuộc tính đã cho và sai nếu nó không.

Cú pháp: Hasattr (đối tượng, tên) ở đâu,hasattr(object, name) where,

Đối tượng - Tên đối tượng của lớp

Tên - Tên thuộc tính sẽ được kiểm tra.

DelAttr () xóa một thuộc tính khỏi đối tượng (nếu được phép).delattr() deletes an attribute from the object (if allowed).

Cú pháp: delattr (class_name, tên) ở đâu,delattr(class_name, name) where,

class_name - tên của lớp

Tên - Tên thuộc tính sẽ bị xóa.

Hy vọng bài viết này giải thích việc sử dụng GetAttr, SetAttr, Hasattr, Delattr.

Bạn có thể nhận mã được sử dụng trong ví dụ trên tại: getattr_setattr_hasattr_delattr.ipynb

Cảm ơn vì đã đọc, chúc mừng :-)

Tài liệu không khuyến khích, tài liệu chỉ nêu rõ ràng. hasattr được triển khai như vậy và ném AttributeError từ một tài sản getter có thể làm cho nó trông giống như thuộc tính không tồn tại. Đây là một chi tiết quan trọng, và đó là lý do tại sao nó được nêu rõ ràng trong tài liệu. Xem xét ví dụ mã này:

class Spam(object):
    sausages = False

    @property
    def eggs(self):
        if self.sausages:
            return 42
        raise AttributeError("No eggs without sausages")

    @property
    def invalid(self):
        return self.foobar


spam = Spam()
print(hasattr(Spam, 'eggs'))

print(hasattr(spam, 'eggs'))

spam.sausages = True
print(hasattr(spam, 'eggs'))

print(hasattr(spam, 'invalid'))

Kết quả là

True
False
True
False

Đó là lớp Spam có bộ mô tả thuộc tính cho

True
False
True
False
0, nhưng vì getter tăng AttributeError nếu
True
False
True
False
2, thì trường hợp của lớp đó không "hasattr"
True
False
True
False
0.

Ngoài ra, chỉ sử dụng hasattr khi bạn không cần giá trị; Nếu bạn cần giá trị, hãy sử dụng

True
False
True
False
6 với 2 đối số và bắt được ngoại lệ hoặc 3 đối số, thứ ba là giá trị mặc định hợp lý.don't need the value; if you need the value, use
True
False
True
False
6 with 2 arguments and catch the exception, or 3 arguments, the third being a sensible default value.

Các kết quả sử dụng

True
False
True
False
7 (2.7.9):

>>> spam = Spam()
>>> print(getattr(Spam, 'eggs'))

>>> print(getattr(spam, 'eggs'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in eggs
AttributeError: No eggs without sausages
>>> spam.sausages = True
>>> print(getattr(spam, 'eggs'))
42
>>> print(getattr(spam, 'invalid'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in invalid
AttributeError: 'Spam' object has no attribute 'invalid'
>>>

Phương thức

True
False
True
False
8 trả về true nếu một đối tượng có thuộc tính được đặt tên và sai nếu không.

Thí dụ

class Person:
    age = 23
    name = "Adam"

person = Person()

print("Person's age:", hasattr(person, "age"))
print("Person's salary:", hasattr(person, "salary"))

# Output:
# Person's age: True
# Person's salary: False


cú pháp hasattr ()

Cú pháp của phương thức

True
False
True
False
8 là:

hasattr(object, name)

tham số HasAttr ()

Phương thức

True
False
True
False
8 lấy hai tham số:

  • đối tượng - đối tượng có thuộc tính được đặt tên
  • Tên - Tên của thuộc tính sẽ được tìm kiếm

HasAttr () Giá trị trả về

Phương thức

True
False
True
False
8 Trả về:

  • >>> spam = Spam()
    >>> print(getattr(Spam, 'eggs'))
    
    >>> print(getattr(spam, 'eggs'))
    Traceback (most recent call last):
      File "", line 1, in 
      File "", line 7, in eggs
    AttributeError: No eggs without sausages
    >>> spam.sausages = True
    >>> print(getattr(spam, 'eggs'))
    42
    >>> print(getattr(spam, 'invalid'))
    Traceback (most recent call last):
      File "", line 1, in 
      File "", line 10, in invalid
    AttributeError: 'Spam' object has no attribute 'invalid'
    >>>
    
    2 - Nếu đối tượng có thuộc tính có tên đã cho
  • >>> spam = Spam()
    >>> print(getattr(Spam, 'eggs'))
    
    >>> print(getattr(spam, 'eggs'))
    Traceback (most recent call last):
      File "", line 1, in 
      File "", line 7, in eggs
    AttributeError: No eggs without sausages
    >>> spam.sausages = True
    >>> print(getattr(spam, 'eggs'))
    42
    >>> print(getattr(spam, 'invalid'))
    Traceback (most recent call last):
      File "", line 1, in 
      File "", line 10, in invalid
    AttributeError: 'Spam' object has no attribute 'invalid'
    >>>
    
    3 - Nếu đối tượng không có thuộc tính được đặt tên

Ví dụ: Python Hasattr ()

class Car:
    brand = "Ford"
    number = 7786

car = Car()

print("The car class has brand:", hasattr(Car, "brand"))
print("The car class has specs: ", hasattr(Car, "specs"))

Đầu ra

The car class has brand: True
The car class has specs:  False

Trong ví dụ trên, chúng tôi có một lớp

>>> spam = Spam()
>>> print(getattr(Spam, 'eggs'))

>>> print(getattr(spam, 'eggs'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in eggs
AttributeError: No eggs without sausages
>>> spam.sausages = True
>>> print(getattr(spam, 'eggs'))
42
>>> print(getattr(spam, 'invalid'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in invalid
AttributeError: 'Spam' object has no attribute 'invalid'
>>>
4 với hai thuộc tính:
>>> spam = Spam()
>>> print(getattr(Spam, 'eggs'))

>>> print(getattr(spam, 'eggs'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in eggs
AttributeError: No eggs without sausages
>>> spam.sausages = True
>>> print(getattr(spam, 'eggs'))
42
>>> print(getattr(spam, 'invalid'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in invalid
AttributeError: 'Spam' object has no attribute 'invalid'
>>>
5 và
>>> spam = Spam()
>>> print(getattr(Spam, 'eggs'))

>>> print(getattr(spam, 'eggs'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in eggs
AttributeError: No eggs without sausages
>>> spam.sausages = True
>>> print(getattr(spam, 'eggs'))
42
>>> print(getattr(spam, 'invalid'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in invalid
AttributeError: 'Spam' object has no attribute 'invalid'
>>>
6.

Khi chúng tôi kiểm tra hai thuộc tính này bằng phương thức

True
False
True
False
8, kết quả là đúng.True.

Mặt khác, đối với bất kỳ thuộc tính nào không có trong lớp

>>> spam = Spam()
>>> print(getattr(Spam, 'eggs'))

>>> print(getattr(spam, 'eggs'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 7, in eggs
AttributeError: No eggs without sausages
>>> spam.sausages = True
>>> print(getattr(spam, 'eggs'))
42
>>> print(getattr(spam, 'invalid'))
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 10, in invalid
AttributeError: 'Spam' object has no attribute 'invalid'
>>>
4, chẳng hạn như thông số kỹ thuật, chúng tôi hiểu sai là đầu ra.specs, we get False as the output.


Bài đọc được đề xuất:

  • Python getattr ()
  • Python Exec ()

Phương thức GetAttr () và HasAttr được sử dụng để làm gì?

Việc sử dụng duy nhất của hàm python getAttr () là lấy giá trị của thuộc tính của một đối tượng và nếu không tìm thấy thuộc tính của đối tượng đó, giá trị mặc định được trả về.Về cơ bản, trả về giá trị mặc định là lý do chính mà bạn nên sử dụng hàm getAttr ().to get the value of an object's attribute and if no attribute of that object is found, default value is returned. Basically, returning the default value is the main reason you you should use getattr() function.

GetAttr () trong Python là gì?

Hàm getAttr () trả về giá trị của thuộc tính được chỉ định từ đối tượng được chỉ định.returns the value of the specified attribute from the specified object.

Hasattr Gọi GetAttr?

HasAttr () kiểm tra sự tồn tại của một thuộc tính bằng cách cố gắng lấy nó.Điều này được thực hiện bằng cách gọi getAttr (đối tượng, tên), có tra cứu và xem liệu một ngoại lệ có được nêu ra hay không.This is implemented by calling getattr(object, name) , which does a lookup, and seeing whether an exception is raised.

Hasattr () được sử dụng cho cái gì?

Chức năng Python HasAttr () là một hàm tiện ích sẵn có, được sử dụng để kiểm tra xem một đối tượng có thuộc tính có tên đã cho hay không và trả về đúng nếu có, khác.to check if an object has the given named attribute and return true if present, else false.