【发布时间】:2021-12-31 06:14:56
【问题描述】:
从外部访问内部类 __OnlyOne 时出现以下错误。这里有什么问题? 我试图在这里使用单例设计模式,只为外部创建一个内部对象实例。
Traceback (most recent call last):
File "F:\parking_lot_code\test.py", line 25, in <module>
PL.add_parking_floor('First Floor')
File "F:\parking_lot_code\test.py", line 21, in add_parking_floor
ParkingLot.instance.__parking_floors.append(floor)
AttributeError: '__OnlyOne' object has no attribute '_ParkingLot__parking_floors'
Process finished with exit code 1
代码
class ParkingLot:
instance = None
class __OnlyOne:
def __init__(self, name, address):
self.__name = name
self.__address = address
self.__parking_floors = []
def __init__(self, name, address):
if not ParkingLot.instance:
ParkingLot.instance = ParkingLot.__OnlyOne(name, address)
else:
ParkingLot.instance.__name = name
ParkingLot.instance.__address = address
def __getattr__(self, name):
return getattr(self.instance, name)
def add_parking_floor(self, floor):
ParkingLot.instance.__parking_floors.append(floor)
PL = ParkingLot('Test Parking Lot', 'Bombay')
PL.add_parking_floor('First Floor')
【问题讨论】:
标签: python singleton inner-classes