Thuộc tính Python ()

Hàm property () trả về thuộc tính property.

Cú pháp của property()là:

 thuộc tính (fget = None, fset = None, fdel = None, doc = None)

Bài đọc được đề xuất: Python @property: Cách sử dụng và tại sao?

property () Tham số

property()bốn tham số tùy chọn:

  • fget (tùy chọn) - Hàm lấy giá trị thuộc tính. Mặc định là None.
  • fset (tùy chọn) - Hàm để thiết lập giá trị thuộc tính. Mặc định là None.
  • fdel (tùy chọn) - Hàm xóa giá trị thuộc tính. Mặc định là None.
  • doc (tùy chọn) - Một chuỗi chứa tài liệu (docstring) cho thuộc tính. Mặc định là None.

Giá trị trả về từ thuộc tính ()

property() trả về thuộc tính thuộc tính từ getter, setter và deleter đã cho.

  • Nếu không có đối số nào được đưa ra, property()trả về một thuộc tính thuộc tính cơ sở không chứa bất kỳ getter, setter hoặc deleter nào.
  • Nếu doc không được cung cấp, hãy property()lấy docstring của hàm getter.

Ví dụ 1: Tạo thuộc tính với getter, setter và deleter

 class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name

Đầu ra

 Lấy tên Tên là: Adam Đặt tên thành John Xóa tên 

Ở đây, _name được sử dụng làm biến riêng để lưu trữ tên của Person.

Chúng tôi cũng đặt:

  • một phương thức getter get_name()để lấy tên của người,
  • một phương thức setter set_name()để đặt tên của người,
  • phương pháp del_name()xóa để xóa tên của người đó.

Bây giờ, chúng ta đặt một tên thuộc tính thuộc tính mới bằng cách gọi property()phương thức.

Như được hiển thị trong chương trình, tham chiếu p.namecác cuộc gọi nội bộ get_name()dưới dạng getter, set_name()như setter và del_name()as deleter thông qua đầu ra được in có bên trong các phương thức.

Ví dụ 2: Sử dụng trình trang trí @property

Thay vì sử dụng property(), bạn có thể sử dụng trình trang trí Python @propertyđể chỉ định getter, setter và deleter.

 class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name

Đầu ra

 Lấy tên Tên là: Adam Đặt tên thành John Xóa tên 

Ở đây, thay vì sử dụng property(), chúng tôi đã sử dụng trình @propertytrang trí.

Đầu tiên, chúng tôi chỉ định rằng name()phương thức cũng là một thuộc tính của Person. Điều này được thực hiện bằng cách sử dụng @propertytrước phương thức getter như được hiển thị trong chương trình.

Tiếp theo, chúng tôi sử dụng tên thuộc tính để chỉ định bộ định và bộ xóa.

Điều này được thực hiện bằng cách sử dụng @name.settercho phương thức setter và @name.deletercho phương thức deleter.

Lưu ý, chúng tôi đã sử dụng cùng một phương pháp name()với các định nghĩa khác nhau để xác định getter, setter và deleter.

Bây giờ, bất cứ khi nào chúng ta sử dụng p.name, nó sẽ gọi nội bộ getter, setter và deleter thích hợp như được hiển thị bởi đầu ra được in bên trong phương thức.

thú vị bài viết...