Python 包含两个值的列表

Python list with two values

我有一个以列表的形式模拟公交车的程序,并且可以将乘客添加到公交车上。我希望能够设置最大乘客人数,这样如果名单超过 25 名乘客,我会显示一个代码,说明公共汽车已满。

是否可以在 Python 的列表中设置此限制。

这是代码片段:


#defining a class for the passenger list
class Bus:
  passengers = []
  number_of_passengers = 0

您可能想要检查列表的长度,然后决定是添加乘客还是显示消息。像这样:

class Bus:

  def __init__(self, max_number_of_passengers = 25):
      self.passengers = []
      self.max_number_of_passengers = max_number_of_passengers

  def add_passenger(self, passenger):
      if len(self.passengers) > self.max_number_of_passengers:
         # display message
      else: 
         self.passengers.append(passenger)
class Bus:
   
   def __init__(self, limit=25):
       self.passengers = []
       self.bus_limit = limit
       self.is_bus_full = False

   def add_passenger(self):
       if len(self.passengers) < self.bus_limit:
           self.passengers.append(1) # add dummy values
       else:
           self.is_bus_full = True
   
   def passenger_left(self):
       self.passengers.pop()

   def bus_status(self):
       if self.is_bus_full:
           return 'This bus is full'
       else:
           return 'This bus has vacant seats'
 

你可以这样写。

你可以使用 class

class Bus:
    def __init__(self):
        self.passengers = []
        self.MAX_LIMIT = 25
        
    def add_passenger(self, passenger):
        if(len(self.passengers) <= self.MAX_LIMIT):
            self.passengers.append(passenger)
        else:
            print('sorry bus is full')
            
    def show_passengers(self):
        print(self.passengers)
        

bus = Bus()
for i in range(26):
    bus.add_passenger(i)
    
bus.add_passenger(26) #sorry bus is full

您可以使用 super 关键字覆盖列表。

class PassengerList(list):
    limit = 0
    def __init__(self, lim):
        self.limit = lim

    def append(self, item):
        if len(self) >= self.limit:
            raise Exception('Limit exceeded.')
        super(PassengerList, self).append(item)  

passengers = PassengerList(25)
passengers.append('abc')

可以通过参数设置限制。