实例属性继承

问题描述 投票:0回答:1

我正在尝试这样做,以便在创建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类的实例访问餐厅的顾客数量

python python-3.x
1个回答
1
投票

客户不是餐厅的一种,因此在这里继承是不合适的。 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()
© www.soinside.com 2019 - 2024. All rights reserved.