Hướng dẫn what does property in python mean? - tài sản trong python nghĩa là gì?

Hàm Python - Property ()

Hàm

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4 được sử dụng để xác định các thuộc tính trong lớp Python.

Phương thức

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4 trong Python cung cấp một giao diện cho các thuộc tính thể hiện. Nó gói gọn các thuộc tính thể hiện và cung cấp một thuộc tính, giống như Java và C#.

Phương thức

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4 lấy các phương thức GET, SET và XÓA làm đối số và trả về một đối tượng của lớp
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
7.

Nên sử dụng bộ trang trí thuộc tính thay vì phương pháp

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4.

property(fget, fset, fdel, doc)

Parameters:

  1. FGET: (Tùy chọn) Hàm để nhận giá trị thuộc tính. Giá trị mặc định là không có.
  2. FSET: (Tùy chọn) Hàm để đặt giá trị thuộc tính. Giá trị mặc định là không có.
  3. FDEL: (Tùy chọn) Hàm để xóa giá trị thuộc tính. Giá trị mặc định là không có.
  4. DOC: (Tùy chọn) Một chuỗi chứa tài liệu. Giá trị mặc định là không có.

Giá trị trở lại:

Trả về thuộc tính thuộc tính từ getter, setter và deleter đã cho.

Ví dụ sau đây cho thấy cách tạo một thuộc tính trong Python bằng hàm

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4.

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)

Trong ví dụ trên,

class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
0 trả về đối tượng thuộc tính và gán nó cho
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1. Do đó, thuộc tính
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1 ẩn thuộc tính cá nhân riêng
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
3. Thuộc tính
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1 được truy cập trực tiếp, nhưng bên trong nó sẽ gọi phương thức
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
5 hoặc
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
6, như được hiển thị bên dưới.

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'

Như bạn có thể thấy ở trên, phương thức

class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
5 được gọi tự động khi chúng tôi truy cập thuộc tính
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1. Theo cách tương tự, phương thức
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
9 được gọi khi chúng ta gán giá trị cho thuộc tính
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1. Nó cũng che giấu thuộc tính thể hiện
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
3.

Theo cách tương tự, bạn có thể chỉ định phương thức Deleter cho thuộc tính, như được hiển thị trong tập lệnh dưới đây.

class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)

Hàm

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
2 sẽ được gọi khi bạn xóa thuộc tính
class person:
    def __init__(self, name):
        self.__name=name
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    def delname(self):
        print('delname() called')
        del self.__name
    # Set property to use get_name, set_name
    # and del_name methods
    name=property(getname, setname, delname)
1.

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called

Theo cách này, chúng ta có thể xác định một thuộc tính trong lớp bằng hàm

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4 trong Python.

@Property Decorator giúp dễ dàng khai báo một tài sản thay vì gọi hàm

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4. Tìm hiểu về nó tiếp theo.

>>> human.__dict__
{'temperature': 37}
7 là chức năng để nhận giá trị của thuộc tính

>>> human.__dict__
{'temperature': 37}
7 là chức năng để nhận giá trị của thuộc tính

>>> human.__dict__
{'temperature': 37}
8 là chức năng đặt giá trị của thuộc tính


>>> human.__dict__ {'temperature': 37}9 là chức năng xóa thuộc tính

# Making Getters and Setter methods
class Celsius:
    def __init__(self, temperature=0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # getter method
    def get_temperature(self):
        return self._temperature

    # setter method
    def set_temperature(self, value):
        if value < -273.15:
            raise ValueError("Temperature below -273.15 is not possible.")
        self._temperature = value
0 là một chuỗi (như một bình luận)

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32

Chúng ta có thể tạo các đối tượng ra khỏi lớp này và thao tác thuộc tính

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 như chúng ta muốn:

# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())

Đầu ra

37
98.60000000000001

Các vị trí thập phân bổ sung khi chuyển đổi thành Fahrenheit là do lỗi số học điểm nổi. Để tìm hiểu thêm, hãy truy cập lỗi số học của Python Point.

Bất cứ khi nào chúng tôi gán hoặc truy xuất bất kỳ thuộc tính đối tượng nào như

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 Như được hiển thị ở trên, Python tìm kiếm nó trong thuộc tính từ điển
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
0 tích hợp của đối tượng.

>>> human.__dict__
{'temperature': 37}

Do đó,

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
1 trong nội bộ trở thành
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
2.


Sử dụng getters và setters

Giả sử chúng ta muốn mở rộng khả năng sử dụng của lớp C, được xác định ở trên. Chúng tôi biết rằng nhiệt độ của bất kỳ vật thể nào cũng không thể đạt dưới -273,15 độ C.

Hãy cập nhật mã của chúng tôi để thực hiện ràng buộc giá trị này.

Một giải pháp rõ ràng cho các hạn chế trên sẽ là ẩn thuộc tính

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 (làm cho nó riêng tư) và xác định các phương thức Getter và Setter mới để thao tác nó. Điều này có thể được thực hiện như sau:

# Making Getters and Setter methods
class Celsius:
    def __init__(self, temperature=0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # getter method
    def get_temperature(self):
        return self._temperature

    # setter method
    def set_temperature(self, value):
        if value < -273.15:
            raise ValueError("Temperature below -273.15 is not possible.")
        self._temperature = value

Như chúng ta có thể thấy, phương pháp trên giới thiệu hai phương thức

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
4 và
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
5 mới.

Hơn nữa,

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 đã được thay thế bằng
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
7. Một dấu gạch dưới
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
8 lúc đầu được sử dụng để biểu thị các biến riêng trong Python.


Bây giờ, hãy sử dụng triển khai này:

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
0

Đầu ra

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
1

Bản cập nhật này đã thực hiện thành công các hạn chế mới. Chúng tôi không còn được phép đặt nhiệt độ dưới -273,15 độ C.

Lưu ý: Các biến riêng tư không thực sự tồn tại trong Python. Đơn giản là có các tiêu chuẩn để được tuân theo. Bản thân ngôn ngữ không áp dụng bất kỳ hạn chế nào.: The private variables don't actually exist in Python. There are simply norms to be followed. The language itself doesn't apply any restrictions.

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
2

Tuy nhiên, vấn đề lớn hơn với bản cập nhật trên là tất cả các chương trình đã triển khai lớp trước của chúng tôi phải sửa đổi mã của họ từ

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
9 thành
# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
0 và tất cả các biểu thức như
# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
1 thành
# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
2.

Việc tái cấu trúc này có thể gây ra vấn đề trong khi xử lý hàng trăm ngàn dòng mã.

Nói chung, bản cập nhật mới của chúng tôi không tương thích ngược. Đây là nơi

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
6 đến giải cứu.


Lớp tài sản

Một cách pythonic để giải quyết vấn đề trên là sử dụng lớp

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
7. Đây là cách chúng tôi có thể cập nhật mã của mình:

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
3

Chúng tôi đã thêm một hàm

# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
5 bên trong
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
4 và
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
5 để quan sát rõ ràng rằng chúng đang được thực thi.

Dòng cuối cùng của mã tạo ra một đối tượng thuộc tính

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8. Nói một cách đơn giản, thuộc tính đính kèm một số mã (
# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
9 và
37
98.60000000000001
0) vào các quyền truy cập thuộc tính thành viên (
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8).

Hãy sử dụng mã cập nhật này:

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
4

Đầu ra

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
5

Như chúng ta có thể thấy, bất kỳ mã nào lấy lại giá trị của

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 sẽ tự động gọi
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
4 thay vì tra cứu từ điển (__dict__). Tương tự, bất kỳ mã nào gán giá trị cho
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 sẽ tự động gọi
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
5.

Chúng ta thậm chí có thể thấy ở trên rằng

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
5 được gọi ngay cả khi chúng ta tạo ra một đối tượng.

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
6

Bạn có thể đoán tại sao?

Lý do là khi một đối tượng được tạo, phương thức

37
98.60000000000001
7 được gọi. Phương pháp này có dòng
37
98.60000000000001
8. Biểu thức này tự động gọi
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
5.

Tương tự, mọi quyền truy cập như

>>> human.__dict__
{'temperature': 37}
0 sẽ tự động gọi
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
4. Đây là những gì tài sản làm. Dưới đây là một vài ví dụ nữa.

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
7

Bằng cách sử dụng

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
7, chúng ta có thể thấy rằng không cần sửa đổi trong việc thực hiện ràng buộc giá trị. Vì vậy, việc thực hiện của chúng tôi là tương thích ngược.

Lưu ý: Giá trị nhiệt độ thực tế được lưu trữ trong biến riêng

class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
7. Thuộc tính
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 là một đối tượng thuộc tính cung cấp giao diện cho biến riêng tư này.
: The actual temperature value is stored in the private
class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32
7 variable. The
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 attribute is a property object which provides an interface to this private variable.


Người trang trí @Property

Trong Python,

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
4 là một hàm tích hợp tạo và trả về một đối tượng
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
7. Cú pháp của chức năng này là:

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
8

where,

  • >>> human.__dict__
    {'temperature': 37}
    7 là chức năng để nhận giá trị của thuộc tính
  • >>> human.__dict__
    {'temperature': 37}
    8 là chức năng đặt giá trị của thuộc tính
  • >>> human.__dict__
    {'temperature': 37}
    9 là chức năng xóa thuộc tính
  • # Making Getters and Setter methods
    class Celsius:
        def __init__(self, temperature=0):
            self.set_temperature(temperature)
    
        def to_fahrenheit(self):
            return (self.get_temperature() * 1.8) + 32
    
        # getter method
        def get_temperature(self):
            return self._temperature
    
        # setter method
        def set_temperature(self, value):
            if value < -273.15:
                raise ValueError("Temperature below -273.15 is not possible.")
            self._temperature = value
    0 là một chuỗi (như một bình luận)

Như được thấy từ việc thực hiện, các đối số chức năng này là tùy chọn. Vì vậy, một đối tượng thuộc tính có thể chỉ đơn giản là được tạo như sau.

class person:
    def __init__(self):
        self.__name=''
    def setname(self, name):
        print('setname() called')
        self.__name=name
    def getname(self):
        print('getname() called')
        return self.__name
    name=property(getname, setname)
9

Một đối tượng thuộc tính có ba phương thức,

# Making Getters and Setter methods
class Celsius:
    def __init__(self, temperature=0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # getter method
    def get_temperature(self):
        return self._temperature

    # setter method
    def set_temperature(self, value):
        if value < -273.15:
            raise ValueError("Temperature below -273.15 is not possible.")
        self._temperature = value
1,
# Making Getters and Setter methods
class Celsius:
    def __init__(self, temperature=0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # getter method
    def get_temperature(self):
        return self._temperature

    # setter method
    def set_temperature(self, value):
        if value < -273.15:
            raise ValueError("Temperature below -273.15 is not possible.")
        self._temperature = value
2 và
# Making Getters and Setter methods
class Celsius:
    def __init__(self, temperature=0):
        self.set_temperature(temperature)

    def to_fahrenheit(self):
        return (self.get_temperature() * 1.8) + 32

    # getter method
    def get_temperature(self):
        return self._temperature

    # setter method
    def set_temperature(self, value):
        if value < -273.15:
            raise ValueError("Temperature below -273.15 is not possible.")
        self._temperature = value
3 để chỉ định
>>> human.__dict__
{'temperature': 37}
7,
>>> human.__dict__
{'temperature': 37}
8 và
>>> human.__dict__
{'temperature': 37}
9 tại một điểm sau. Điều này có nghĩa là, dòng:

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
0

có thể bị phá vỡ như:

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
1

Hai đoạn mã này là tương đương.

Các lập trình viên quen thuộc với các nhà trang trí Python có thể nhận ra rằng cấu trúc trên có thể được thực hiện như là nhà trang trí.

Chúng tôi thậm chí không thể xác định tên

# Basic method of setting and getting attributes in Python
class Celsius:
    def __init__(self, temperature=0):
        self.temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32


# Create a new object
human = Celsius()

# Set the temperature
human.temperature = 37

# Get the temperature attribute
print(human.temperature)

# Get the to_fahrenheit method
print(human.to_fahrenheit())
9 và
37
98.60000000000001
0 vì chúng không cần thiết và gây ô nhiễm không gian tên lớp.

Đối với điều này, chúng tôi sử dụng lại tên

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
8 trong khi xác định các hàm getter và setter của chúng tôi. Hãy xem cách thực hiện điều này như một người trang trí:

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
2

Đầu ra

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
3

Việc thực hiện trên là đơn giản và hiệu quả. Đó là cách khuyến nghị để sử dụng

>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
7.

Thuộc tính và thuộc tính trong Python là gì?

Các thuộc tính được mô tả bởi các biến dữ liệu, ví dụ như tên, tuổi, chiều cao, v.v. Các thuộc tính là loại thuộc tính đặc biệt có các phương thức Getter, Setter và Xóa như __get__, __set__ và __delete__.

Các thuộc tính của một đối tượng trong Python là gì?

Mỗi đối tượng có thể được thay đổi hoặc bất biến dựa trên loại dữ liệu họ nắm giữ.Một số đối tượng như danh sách và từ điển là có thể thay đổi, có nghĩa là bạn có thể thay đổi nội dung của chúng mà không thay đổi danh tính của chúng.Các đối tượng khác như số nguyên, phao, chuỗi và bộ dữ liệu là các đối tượng không thể thay đổi.. Some of these objects like lists and dictionaries are mutable , meaning you can change their content without changing their identity. Other objects like integers, floats, strings and tuples are objects that can not be changed.

Một tài sản của một lớp là gì?

Thuộc tính là các thuộc tính hoặc tính năng đặc trưng cho các lớp.Mặc dù các lớp là các nhóm đối tượng, một thể hiện là một đối tượng cụ thể thực sự thuộc về một lớp.attributes or features that characterize classes. While classes are groups of objects, an instance is a specific object that actually belongs to a class.

Chức năng tài sản trả về gì?

Theo Hướng dẫn sử dụng JMeter __Property (): Hàm thuộc tính trả về giá trị của thuộc tính JMeter.Nếu giá trị tài sản không thể được tìm thấy và không có mặc định nào được cung cấp, nó sẽ trả về tên thuộc tính.