Hướng dẫn how do i get a list of class properties in python? - làm cách nào để lấy danh sách các thuộc tính lớp trong python?

42

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có lớp someclass với các thuộc tính. Ví dụ

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
9 và
import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
0:

class SomeClass(object):
    def __init__(self):
        self.__id = None
        self.__name = None

    def get_id(self):
        return self.__id

    def set_id(self, value):
        self.__id = value

    def get_name(self):
        return self.__name

    def set_name(self, value):
        self.__name = value

    id = property(get_id, set_id)
    name = property(get_name, set_name)

Cách dễ nhất để liệt kê các thuộc tính là gì? Tôi cần điều này để tuần tự hóa.

hỏi ngày 31 tháng 7 năm 2009 lúc 23:58Jul 31, 2009 at 23:58

Hướng dẫn how do i get a list of class properties in python? - làm cách nào để lấy danh sách các thuộc tính lớp trong python?

1

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]

Đã trả lời ngày 1 tháng 8 năm 2009 lúc 0:05Aug 1, 2009 at 0:05

Mark Roddymark RoddyMark Roddy

26.1K19 Huy hiệu vàng66 Huy hiệu bạc71 Huy hiệu đồng19 gold badges66 silver badges71 bronze badges

2

import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]

import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
1 cũng được các thành viên được thừa hưởng (và chọn các thành viên bằng một vị từ, ở đây chúng tôi đã mã hóa
import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
2 vì nó không phải là một trong số nhiều người được xác định trước trong mô -đun
import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
3; tất nhiên, bạn cũng có thể sử dụng
import inspect

def isprop(v):
  return isinstance(v, property)

propnames = [name for (name, value) in inspect.getmembers(SomeClass, isprop)]
4, nếu bạn thích).

Đã trả lời ngày 1 tháng 8 năm 2009 lúc 1:45Aug 1, 2009 at 1:45

Alex Martellialex MartelliAlex Martelli

826K163 Huy hiệu vàng1203 Huy hiệu bạc1382 Huy hiệu Đồng163 gold badges1203 silver badges1382 bronze badges

0

Các lớp Python chủ yếu là các mẫu để tạo các đối tượng mới. Nội dung/thuộc tính của các đối tượng thuộc một lớp được mô tả bởi lớp.

Chính xác thì thuộc tính lớp là gì?

Các thuộc tính lớp không có gì ngoài các biến của một lớp. Điều quan trọng cần lưu ý là các biến này được chia sẻ giữa tất cả các trường hợp của lớp.

class example:
z=5
obj1=example()
print(obj1.z)
obj2=example()
print(obj1.z+obj2.z)
5
10

Trong mã ví dụ trên, Z là thuộc tính lớp và được chia sẻ bởi các trường hợp lớp OBJ1 và OBJ2.

Trong hướng dẫn này, bạn sẽ học cách tìm nạp một danh sách các thuộc tính lớp trong Python.

Sử dụng phương thức Dir () để tìm tất cả các thuộc tính lớp

Nó trả về một danh sách các thuộc tính và phương thức của đối tượng/lớp được truyền. Khi được gọi là đối tượng lớp, nó trả về một danh sách tên của tất cả các thuộc tính hợp lệ và thuộc tính cơ sở.

Cú pháp: Dir (đối tượng), trong đó đối tượng là tùy chọn.

Ở đây, bạn có thể có được danh sách các thuộc tính lớp;

  • Bằng cách vượt qua lớp học ____5
    5 10 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'z']
  • Bằng cách chuyển đối tượng của lớp ____7
    5
    10
    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'z']

Tuy nhiên, phương thức Dir () cũng trả về các phương thức ma thuật của lớp cùng với các thuộc tính lớp.

Bằng cách sử dụng __dict__ Nhận các thuộc tính lớp

Nó lưu trữ/trả về một từ điển của các thuộc tính mô tả một đối tượng. Hãy để chúng tôi hiểu như vậy bằng cách xem xét một ví dụ.

Cú pháp: Đối tượng .__ Dict__

class fruit():
    def __init__(self,fruitname,color):
        self.name=fruitname
        self.color=color
apple=fruit("apple","red")
print(apple.name)
print(apple.color) 
print(apple.__dict__)
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
0

Ở đây, Apple là một đối tượng thuộc về trái cây. Vì vậy, __dict__ đã trả về một từ điển chứa các thuộc tính của đối tượng, tức là, Apple.

Ngoài ra, bạn có thể nhận thêm chỉ các khóa hoặc giá trị cho đối tượng cụ thể bằng cách sử dụng khóa từ điển, hệ thống lưu trữ giá trị.

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
1
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
2

Bằng cách sử dụng mô -đun kiểm tra GetMembers ()

Hàm getMembers () truy xuất các thành viên của một đối tượng như một lớp trong danh sách.

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
3
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
4

Để có được một danh sách các thuộc tính đối tượng được thông qua, tức là, để xóa tất cả các thuộc tính/phương thức ma thuật được xây dựng công khai và riêng tư khỏi danh sách;

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
5
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
6

Sử dụng phương thức vars ()

Nó lấy một đối tượng làm tham số và trả về các thuộc tính của nó.

Cú pháp: Vars (đối tượng)

property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
7
property_names=[p for p in dir(SomeClass) if isinstance(getattr(SomeClass,p),property)]
8

Tuy nhiên, bạn phải quan sát rằng hai phương thức trên chỉ trả về các thuộc tính lớp cho lớp cơ sở tương ứng.

Để hiểu rõ hơn, hãy đọc, giới thiệu về các lớp học và đối tượng trong Python

Bạn có thể có một danh sách các đối tượng lớp trong Python không?

Chúng ta có thể tạo danh sách đối tượng trong Python bằng cách nối thêm các phiên bản lớp vào danh sách. Bằng cách này, mọi chỉ mục trong danh sách đều có thể trỏ đến các thuộc tính và phương thức của lớp và có thể truy cập chúng. Nếu bạn quan sát nó một cách chặt chẽ, một danh sách các đối tượng hoạt động giống như một mảng các cấu trúc trong C.. By this, every index in the list can point to instance attributes and methods of the class and can access them. If you observe it closely, a list of objects behaves like an array of structures in C.

Làm thế nào để tôi có được các thuộc tính 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 tất cả các thuộc tính của một đối tượng 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 cách nào để nhận danh sách các phương thức trong một lớp Python?

Để liệt kê các phương thức cho lớp này, một cách tiếp cận là sử dụng hàm Dir () trong Python.Hàm Dir () sẽ trả về tất cả các hàm và thuộc tính của lớp.use the dir() function in Python. The dir() function will return all functions and properties of the class.