Python 3.x 仅获取Python中对象的已定义属性
我想在Python中获得我自己定义的对象的所有属性,以创建字符串表示。我希望避免手工编写和自己填充所有变量,因此将来添加/删除属性不会导致错误 例如,在下面的代码中,我正在寻找一种方法来检索我自己定义的所有属性:电子邮件、密码和生日 在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
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
将属性名称映射到属性值