我想创建类 Tire 的 4 个实例并将这些实例保存在列表 (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:轮胎实例没有属性‘__pressure’
请您参考如下方法:
具有两个前导下划线(并且不超过一个尾随下划线)的属性名称将是 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
