如何使用构造函数在python中创建一个对象

时间:2018-04-29 01:22:07

标签: python class constructor

这个让我很困惑。我需要使用我创建的类来在主模块中创建一个对象。但是根据我自己的经验,我们应该在main中创建对象,然后才能从类中调用函数。我需要创建的对象的名称将被命名为(Customer1),程序的一般概念是它是中餐馆的订购程序代码如下。

def Choose_dish(self):

    print('Please choose from the following items for a main dish:'
          'Sweet and Sour Pork, Sesame Chicken, or Shrimp Fried rice.')

    choice = input('Press 1 for Sweet and Sour, Press 2 for Sesame Chicken, or press 3 for Shrimp Fried rice.')

    if choice == 1:
        self._dish = 'sweet and sour'

    if choice ==2:
        self._dish = 'sesame chicken'

    if choice == 3:
        self._dish = 'shrimp fried rice'

第一种方法是受保护的构造函数,它被调用,因此(Customer1)对象可以选择主菜。以下是我一直在尝试的代码。

from Dinner_Combo import Dinner_combo
def main():
    print('Welcome to the restaurant')
    choice = input('please select 1 for regular meal, or select 2 for deluxe meal!')
    if int(choice) == 1:
        customer1 = Dinner_combo()

main()

请注意,我创建的python类文件的名称是" Dinner_Combo",类的名称本身是" Dinner_combo"

1 个答案:

答案 0 :(得分:0)

你可以这样做:

class Dinner_combo(object):
    def __init__(self):
        self._dish = self.Choose_dish()

    def Choose_dish(self):
        print('Please choose from the following items for a main dish:'
              'Sweet and Sour Pork, Sesame Chicken, or Shrimp Fried rice.')
        choice = input('Press 1 for Sweet and Sour, Press 2 for Sesame Chicken, or press 3 for Shrimp Fried rice.')
        if choice == 1:
            return 'sweet and sour'
        elif choice == 2:
            return 'sesame chicken'
        elif choice == 3:
            return 'shrimp fried rice'

以上内容可以帮助您在main中实现所需的行为,但我建议您重新评估一下您的方法:我通常会尝试避免任何可能在初始化程序中崩溃的操作。

Initializer(__init__(self, ...))是一个类的特殊方法,在创建对象后“自动”调用。该对象实际上已经存在,初始化程序只是初始化它。通常,除非您调用它来初始化父类,否则不要显式调用它。

来自https://docs.python.org/2/tutorial/classes.html#class-objects

  

实例化操作(“调用”类对象)创建一个空对象。许多类喜欢创建具有针对特定初始状态定制的实例的对象。因此,类可以定义名为__init__()的特殊方法,如下所示:

def __init__(self):
    self.data = []
  

当类定义__init__()方法时,类实例化会自动为新创建的类实例调用__init__()