如何解决如何简洁地列出类和对象的所有属性?
我已经开始在python中创建类和对象,进度很慢,但是我到了那里。 我想问社区是否可以输出类/对象的所有属性。
我创建了以下课程:-
import inspect
class Helloclass:
def __init__(self):
self.A = ""
self.B = ""
self.C = ""
self.D = ""
london = Helloclass()
london.A = "Apples"
london.D = 120
print(inspect.getmembers(london))
- 我从Helloclass创建了一个名为london的对象(因此
london
是Helloclass
的实例)。 - 我在类中编码了4个属性,分别是
A
,B
,C
和D
。 - 我已将字符串
'Apples'
分配给A
对象的london
属性。 - 我已将
120
的值分配给A
对象的london
属性。 - 我想打印出
london
对象或Helloclass
类的所有可用属性。 - 我已经使用了
inspect
模块,但是这给了我一个可怕的输出,看起来像:-
('A','Apples'),('B',''),('C',('D',120),('__class__',<class '__main__.Helloclass'>),('__delattr__',<method-wrapper '__delattr__' of Helloclass object at 0x000001E6B704CD00>),('__dict__',{'A': 'Apples','B': '','C': '','D': 120}),('__dir__',<built-in method __dir__ of
Helloclass object at 0x000001E6B704CD00>),('__doc__',None),('__eq__',<method-wrapper '__eq__' of
Helloclass object at 0x000001E6B704CD00>),('__format__',<built-in method __format__ of Helloclass
object at 0x000001E6B704CD00>),('__ge__',<method-wrapper '__ge__' of Helloclass object at
0x000001E6B704CD00>),('__getattribute__',<method-wrapper '__getattribute__' of Helloclass object at
0x000001E6B704CD00>),('__gt__',<method-wrapper '__gt__' of Helloclass object at
0x000001E6B704CD00>),('__hash__',<method-wrapper '__hash__' of Helloclass object at
0x000001E6B704CD00>),('__init__',<bound method Helloclass.__init__ of <__main__.Helloclass object
at 0x000001E6B704CD00>>),('__init_subclass__',<built-in method __init_subclass__ of type object at
0x000001E6B57CF350>),('__le__',<method-wrapper '__le__' of Helloclass object at
0x000001E6B704CD00>),('__lt__',<method-wrapper '__lt__' of Helloclass object at
0x000001E6B704CD00>),('__module__','__main__'),('__ne__',<method-wrapper '__ne__' of Helloclass
object at 0x000001E6B704CD00>),('__new__',<built-in method __new__ of type object at
0x00007FFF9F7DCB50>),('__reduce__',<built-in method __reduce__ of Helloclass object at
0x000001E6B704CD00>),('__reduce_ex__',<built-in method __reduce_ex__ of Helloclass object at
0x000001E6B704CD00>),('__repr__',<method-wrapper '__repr__' of Helloclass object at
0x000001E6B704CD00>),('__setattr__',<method-wrapper '__setattr__' of Helloclass object at
0x000001E6B704CD00>),('__sizeof__',<built-in method __sizeof__ of Helloclass object at
0x000001E6B704CD00>),('__str__',<method-wrapper '__str__' of Helloclass object at
0x000001E6B704CD00>),('__subclasshook__',<built-in method __subclasshook__ of type object at
0x000001E6B57CF350>),('__weakref__',None)
尽管这给了我我想要的东西,但还有很多我不需要或不想看到的东西。
我只希望输出为:-
london Object of Class Helloclass
london.A = "Apples"
london.B = ""
london.C = ""
london.D = 120
有没有办法获得更清洁的输出?
解决方法
您可以使用vars
获得这种输出
>>> vars(london)
{'A': 'Apples','B': '','C': '','D': 120}
,
您可以简单地做到这两者。
import inspect
class Helloclass:
def __init__(self):
self.A = ""
self.B = ""
self.C = ""
self.D = ""
def __str__(self):
return str(self.__class__) + '\n' + '\n'.join((str(item) + ' = ' + str(self.__dict__[item]) for item in sorted(self.__dict__)))
london = Helloclass()
london.A = "Apples"
london.D = 120
print(london)
应该产生一些接近的东西
<class '__main__.Helloclass'>
A = Apples
B =
C =
D = 120
您还可以使用self。课程。名称,并根据需要更改字符串。
def __str__(self):
return 'Object of Class '+str(self.__class__.__name__ ) + '\n' + '\n'.join((str(item) + ' = ' + str(self.__dict__[item]) for item in sorted(self.__dict__)))
应该更近一些。
Object of Class Helloclass
A = Apples
B =
C =
D = 120
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。