Hướng dẫn how do you return a property in python? - làm thế nào để bạn trả lại một thuộc tính trong python?

Tôi có một lớp học như thế này:

class Foo[object]:
    def __init__[self]:
        self.bar = property[self.get_bar]

    def get_bar[self]:
        return "bar"

print Foo[].bar  #this prints 

Tôi đã thấy làm thế nào để các thuộc tính Python hoạt động ?, Làm thế nào để đặt một thuộc tính Python trong __init__, nhưng tất cả chúng đều sử dụng phương pháp trang trí mà tôi không muốn vì tôi muốn có một tên khác. Và tôi cần truy cập vào self

Làm thế nào để tôi có được tài sản để cư xử?

Đã hỏi ngày 16 tháng 2 năm 2014 lúc 13:54Feb 16, 2014 at 13:54

5

Bạn cần thực hiện một thay đổi nhỏ:

class Foo[object]:

    def get_bar[self]:
        return "bar"

    bar = property[get_bar]

print Foo[].bar # prints bar

Tài sản cần phải là một thuộc tính của lớp, không phải là ví dụ; Đó là cách giao thức mô tả hoạt động.

Đã trả lời ngày 16 tháng 2 năm 2014 lúc 14:08Feb 16, 2014 at 14:08

Jonrsharpejonrsharpejonrsharpe

Huy hiệu vàng 110K2525 gold badges217 silver badges402 bronze badges

5

Bạn có thể làm điều đó như thế này

class Foo[object]:
    def __init__[self]:
        self.__bar = None

    def get_bar[self]:
        return self.__bar

    def set_bar[self, value]:
        self.__bar = value

    bar = property[get_bar, set_bar]

foo = Foo[]
print foo.bar    # None
foo.bar = 1
print foo.bar    # 1

Đã trả lời ngày 16 tháng 2 năm 2014 lúc 14:06Feb 16, 2014 at 14:06

Thefourtheyethefourtheyethefourtheye

226K52 Huy hiệu vàng443 Huy hiệu bạc486 Huy hiệu Đồng52 gold badges443 silver badges486 bronze badges

Bạn cũng có thể làm điều đó như được hiển thị ở đây:

class Foo[object]:
    def __init__[self]:
        self._bar = None

    @property
    def bar[self]:
        return self._bar

    @bar.setter
    def bar[self, value]:
        self._bar = value

    @bar.deleter
    def bar[self]:
        self._bar = None # for instance

tương đương với:

class Also_Foo[object]:
    def __init__[self]:
        self._bar = None

    def get_bar[self]:
        return self._bar

    def set_bar[self, value]:
        self._bar = value

    def del_bar[self]:
        self._bar = None # for instance

    bar = property[fget=get_bar, fset=set_bar, fdel=del_bar, doc=None]

Nhưng không gây ô nhiễm không gian tên lớp với các phương thức getset cho mỗi thuộc tính. without polluting the class namespace with get and set methods for each attribute.

Bạn giữ lại quyền truy cập trực tiếp bên ngoài vào biến bằng cách sử dụng

class Foo[object]:

    def get_bar[self]:
        return "bar"

    bar = property[get_bar]

print Foo[].bar # prints bar
0 thay vì
class Foo[object]:

    def get_bar[self]:
        return "bar"

    bar = property[get_bar]

print Foo[].bar # prints bar
1.

Đã trả lời ngày 1 tháng 3 năm 2017 lúc 14:46Mar 1, 2017 at 14:46

berna1111berna1111berna1111

1.7591 Huy hiệu vàng19 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge19 silver badges20 bronze badges

Đối tượng không được khởi tạo.

class Foo[object]:
  def get_bar[self]:
    return "bar"

bar = Foo[]
print[bar.get_bar]

Công viên David

29.2K44 Huy hiệu vàng172 Huy hiệu bạc 310 Huy hiệu đồng44 gold badges172 silver badges310 bronze badges

Đã trả lời ngày 21 tháng 11 năm 2017 lúc 22:10Nov 21, 2017 at 22:10

Warchitectwarchitectwarchitect

3471 Huy hiệu vàng2 Huy hiệu bạc15 Huy hiệu đồng1 gold badge2 silver badges15 bronze badges

2

Trường hợp sử dụng của tôi yêu cầu xác định

class Foo[object]:

    def get_bar[self]:
        return "bar"

    bar = property[get_bar]

print Foo[].bar # prints bar
2 là một tài sản chỉ trong một số điều kiện nhất định, vì vậy tôi đã nhận lời khuyên của Jonrsharpe và chuyển định nghĩa vào
class Foo[object]:

    def get_bar[self]:
        return "bar"

    bar = property[get_bar]

print Foo[].bar # prints bar
3 thay vào đó: thay vào đó:

class Foo[object]:
    def __new__[cls]:
        cls.bar = property[cls.get_bar]
        return super[Foo, cls].__new__[cls]

    def get_bar[self]:
        return "bar"

print[Foo[].bar]  #this prints "bar"

Tuy nhiên, không có gì đạt được bởi "sự thông minh" này. Khi điều kiện được đáp ứng, lớp chứa tài sản. Tôi cũng có thể đã định nghĩa nó như Jonrsharpe đã làm.

Đã trả lời ngày 21 tháng 2 năm 2021 lúc 19:08Feb 21, 2021 at 19:08

jcomeau_ictxjcomeau_ictxjcomeau_ictx

37K6 Huy hiệu vàng92 Huy hiệu bạc102 Huy hiệu Đồng6 gold badges92 silver badges102 bronze badges

Làm thế nào để tôi có được một tài sản trong Python?

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. in Python 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 in một đối tượng thuộc tính trong Python?

Sử dụng Vars [] của Python để in các thuộc tính của một đối tượng hàm Dir [], như được hiển thị ở trên, in tất cả các thuộc tính của một đối tượng Python. Giả sử bạn chỉ muốn in các thuộc tính thể hiện của đối tượng cũng như các giá trị của chúng, chúng ta có thể sử dụng hàm vars []. The dir[] function, as shown above, prints all of the attributes of a Python object. Let's say you only wanted to print the object's instance attributes as well as their values, we can use the vars[] function.

Làm thế nào để bạn gọi một chức năng tài sản trong Python?

Bạn có thể tạo một thuộc tính bằng cách gọi Thuộc tính [] với một tập hợp các đối số thích hợp và gán giá trị trả về của nó cho thuộc tính lớp.Tất cả các đối số cho thuộc tính [] là tùy chọn.Tuy nhiên, bạn thường cung cấp ít nhất một hàm setter.calling property[] with an appropriate set of arguments and assigning its return value to a class attribute. All the arguments to property[] are optional. However, you typically provide at least a setter function.

__ Nhận __ trong Python là gì?

Python __get__ Phương pháp ma thuật.Phương thức ma thuật __get __get __ [] của Python xác định giá trị trả về động khi truy cập vào một thể hiện cụ thể và thuộc tính lớp.Nó được xác định trong lớp của thuộc tính chứ không phải trong lớp giữ thuộc tính [= lớp chủ sở hữu].defines the dynamic return value when accessing a specific instance and class attribute. It is defined in the attribute's class and not in the class holding the attribute [= the owner class].

Bài Viết Liên Quan

Chủ Đề