我正在尝试这样做,以便在创建Customer实例并指定要前往的餐厅时,将指定该Restaurant类实例的number_served实例属性,并增加前往餐厅的客户数量。
我不确定number_served是否应为类或实例属性(我认为是类),而且我不确定如何将属性从Restaurant类继承到Customer类,以便可以对其进行递增。
class Restaurant:
def __init__(self,name,restaurant_type,cuisine_type):
self.name = name
self.restaurant_type = restaurant_type
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
print(f"{self.name} is {self.restaurant_type} which serves {self.cuisine_type}.")
def open_restaurant(self):
print(f"{self.name} is open.")
def get_number_served(self):
print(f"{self.number_served} customers served at the {self.name} today.")
def increment_number_served(self,num):
self.number_served += num
class Customers(Restaurant):
def __init__(self,where_eating,no_of_people):
self.where_eating = where_eating
self.no_of_people = no_of_people
def go_eat(self):
self.increment_number_served(self.no_of_people)
我基本上希望将餐厅实例的number_served属性增加从Customers类的实例访问餐厅的顾客数量
客户不是餐厅的一种,因此在这里继承是不合适的。 go_eat
方法应将Restaurant
的实例作为参数。
class Restaurant:
def __init__(self, name, restaurant_type, cuisine_type):
self.name = name
self.restaurant_type = restaurant_type
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
print(f"{self.name} is {self.restaurant_type} which serves {self.cuisine_type}.")
def open_restaurant(self):
print(f"{self.name} is open.")
def get_number_served(self):
print(f"{self.number_served} customers served at the {self.name} today.")
def increment_number_served(self,num):
self.number_served += num
r = Restaurant("...", "...", "...")
class Customers:
def __init__(self, no_of_people):
self.no_of_people = no_of_people
def go_eat(self, restaurant):
restaurant.increment_number_served(self.no_of_people)
c = Customers(9)
c.go_eat(r)
[如果您想Customers
不仅代表一组食客,而且代表去特定餐厅的一组食客,则将r
传递给__init__
:
class Customers:
def __init__(self, where, no_of_people):
self.where = where
self.no_of_people = no_of_people
def go_eat(self):
self.where.increment_number_served(self.no_of_people)
c = Customers(r, 9)
c.go_eat()