Python有没有一种方法可以获得obj的所有属性

2024-04-25 08:53:23 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在另一个.py文件中有一个叫做“Car”的类(我的班级.py)你知道吗

class Car:
    tires = 4
    color = ""
    speed = 0
    engine = ""

在我看来

import MyClasses

ferrari = MyClasses.Car()
ferrari.color = "Red"
ferrari.engine = "Fast"
ferrari.speed = 200

for prpty in ferrari:
    print(prpty)

我想要的输出是这样的:

tires = 4
color = Red
speed = 200
engine = Fast

我知道输出的格式取决于我。只有在for循环中,才能根据对象获取属性名及其值。你知道吗


Tags: 文件pyforredcarengineclasscolor
3条回答

这里有一个解决方案:

ferrari = Car()
errari.color = "Red"
ferrari.engine = "Fast"
ferrari.speed = 200
for attr in [i in dir(ferrari) if not i.startswith('_')]:
    print('{}: {}'.format(attr, getattr(ferrari, attr))

dir()提供所有属性,为了获得类变量,我们对其进行过滤,如下所示:

>>> dir(ferrari)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'color', 'engine', 'speed', 'tires']

>>> classVariables = [attr for attr in dir(ferrari) if not callable(getattr(ferrari, attr)) and not attr.startswith("__")]

>>> print(classVariables)
['color', 'engine', 'speed', 'tires']

为什么不做一个函数来打印类的所有属性。。。 这会省去你所有的麻烦。。。 比如:

class Car:
       tires=4
       speed=0
       color=" "
       def print_atr(self):
               print("tires = ",self.tires)
               print("speed = ",self.speed)
               print("color = ",self.color)

相关问题 更多 >