簡體   English   中英

將類實例保存在python列表中,並遍歷每個實例

[英]Hold the class instances in a python list and iterate through each instance

我想創建4個Tyre類的實例,並將這些實例保存在列表中(All_Tires),然后遍歷每個實例(使用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

我希望打印語句輸出“ 0”,而不是錯誤消息“ AttributeError:Tire實例沒有屬性'__pressure'

具有兩個前導下划線(且不超過一個下划線)的屬性名稱將被修飾 ,並隨后在類定義之外變得(幾乎)不可訪問。 如果您希望能夠從任何地方訪問屬性,請不要在名稱前加上兩個下划線。

如果將類定義更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM