Hướng dẫn how do you set a property of an object in python? - làm cách nào để bạn đặt thuộc tính của một đối tượng trong python?

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.

Show

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.

# 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)

# 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.


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 = value1, # 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 = value2 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 = value3 để 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:

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

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

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

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

# 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.

Đối tượng thuộc tính trong Python là gì?

Phương thức thuộc tính () 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 thuộc tính () 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 thuộc tính.provides an interface to instance attributes. It encapsulates instance attributes and provides a property, same as Java and C#. The property() method takes the get, set and delete methods as arguments and returns an object of the property class.

Làm thế nào để bạn đặt một thuộc tính đối tượng trong Python?

Hàm setAttr () đặt giá trị của thuộc tính của một đối tượng ...
Đối tượng - đối tượng có thuộc tính phải được đặt ..
Tên - Tên thuộc tính ..
Giá trị - giá trị được đưa ra cho thuộc tính ..

Làm thế nào để bạn truy cập các thuộc tính của một đối tượng trong Python?

Các thuộc tính của một lớp cũng có thể được truy cập bằng các phương thức và hàm tích hợp sau: getattr ()-hàm này được sử dụng để truy cập thuộc tính của đối tượng.HasAttr () - Hàm này được sử dụng để kiểm tra xem thuộc tính có tồn tại hay không.setAttr () - Hàm này được sử dụng để đặt thuộc tính.getattr() – This function is used to access the attribute of object. hasattr() – This function is used to check if an attribute exist or not. setattr() – This function is used to set an attribute.

Làm thế nào để bạn loại bỏ một thuộc tính của một đối tượng trong Python?

Bạn có thể xóa thuộc tính đối tượng bằng cách sử dụng từ khóa 'del'.by using the 'del' keyword.