将类实例保存在python列表中,并遍历每个实例

2024-09-30 01:20:18 发布

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

我想创建4个类Tire的实例,并将这些实例保存在一个列表中(所有的轮胎),遍历(使用for循环)每个实例并打印每个实例的成员。你知道吗

class Tire():
    __identifier=0
    __temperature=0
    __pressure=0
    __pressure_position=0
    __temperature_position=0 
    __pressure_font=0
    __temperature_font=0
    __background_area =0    
    __color=0

    def __init__(self,fourbyteid,backarea,presspos,temppos,press=0,temp=0,bkcolor=GREEN):
        self.__identifier=fourbyteid
        self.__temperature=temp
        self.__pressure=press
        self.__pressure_position=presspos
        self.__temperature_position=temppos 
        self.__background_area=backarea
        self.__color=bkcolor

from tire import Tire

class ScreenArea(object):    
    def __init__(self,x,y):
        self.w=x 
        self.h=y

# Set the width and height of the screen [width, height]
ssize = ScreenArea(320,240)


FL = Tire("0d224bff",
          (0,0,ssize.w/2,ssize.h/2),
          (ssize.w*1/8, ssize.h/4),
          (ssize.w*1/8, ssize.h/4))
FR = Tire("0d224bf4",
          (ssize.w/2,0,ssize.w/2,ssize.h/2),
          (ssize.w*3/4, ssize.h/4),
          (ssize.w*3/4, ssize.h/4))
RL = Tire("0d2262b9",
          (0,ssize.h/2,ssize.w/2,ssize.h/2),
          (ssize.w*1/8, ssize.h*3/4),
          (ssize.w*1/8, ssize.h*3/4))
RR = Tire("0d22622a",
          (ssize.w/2,ssize.h/2,ssize.w/2,ssize.h/2),
          (ssize.w*3/4, ssize.h*3/4),
          (ssize.w*3/4, ssize.h*3/4))

All_Tires=[FL,FR,RL,RR]
print All_Tires
for tire in All_Tires:
    print tire.__pressure

我希望print语句输出一个“0”,而不是得到错误消息“AttributeError:Tire instance has no attribute'\u pressure'


Tags: 实例selfforpositionallclassprintfont
1条回答
网友
1楼 · 发布于 2024-09-30 01:20:18

带有两个前导下划线(且不超过一个尾随下划线)的属性名将mangled,并且随后在类定义之外变得(大部分)不可访问。如果您希望能够从任何地方访问属性,请不要使用两个前导下划线来命名它。你知道吗

如果将类定义更改为:

class Tire():
    def __init__(self,fourbyteid,backarea,presspos,temppos,press=0,temp=0,bkcolor=GREEN):
        self.identifier=fourbyteid
        self.temperature=temp
        self.pressure=press
        self.pressure_position=presspos
        self.temperature_position=temppos 
        self.background_area=backarea
        self.color=bkcolor

以及您的打印声明:

for tire in All_Tires:
    print tire.pressure

。。。那么你的输出将是

[<__main__.Tire instance at 0x02986260>, <__main__.Tire instance at 0x02986288>, <__main__.Tire instance at 0x029862B0>, <__main__.Tire instance at 0x029862D8>]
0
0
0
0

相关问题 更多 >

    热门问题