Python 3.x 仅获取Python中对象的已定义属性

Python 3.x 仅获取Python中对象的已定义属性,python-3.x,class,object,attributes,python-dataclasses,Python 3.x,Class,Object,Attributes,Python Dataclasses,我想在Python中获得我自己定义的对象的所有属性,以创建字符串表示。我希望避免手工编写和自己填充所有变量,因此将来添加/删除属性不会导致错误 例如,在下面的代码中,我正在寻找一种方法来检索我自己定义的所有属性:电子邮件、密码和生日 在Python中有没有实现这一点的方法 class Account: def __init__(self, email, password, birthday): self.email = email self.passwor

我想在Python中获得我自己定义的对象的所有属性,以创建字符串表示。我希望避免手工编写和自己填充所有变量,因此将来添加/删除属性不会导致错误

例如,在下面的代码中,我正在寻找一种方法来检索我自己定义的所有属性:电子邮件、密码和生日

在Python中有没有实现这一点的方法

class Account:
    def __init__(self, email, password, birthday):
        self.email = email
        self.password = password
        self.birthday = birthday

    def __str__(self):
        delim = ","
        # I want to prevent writing this all out
        return f"{self.email}{delim}{self.password}{delim}{self.birthday}"


print(Account("manfred@gmail.com", "hunter2", 3))

您可以使用列表: 您需要定义类的实例:

A = Account("manfred@gmail.com", "hunter2", 3)
{i:getattr(A, i) for i in dir(A) if not i.startswith("_")}

{'birthday': 3, 'email': 'manfred@gmail.com', 'password': 'hunter2'}

试试这样的

列表(帐户(“manfred@gmail.com,“hunter2”,3)。\uuuu dict\uuuu.values()

对于目录中的i(A)
不,不,不,不要这样做。使用
vars(A)
A.\uu dict\uuu
dir
不适用于此情况。在本例中,只需使用
self.\uuu dict\uuu
或等效的
vars(self)
,两者都返回对象的命名空间,即
dict
将属性名称映射到属性值