这个让我很困惑。我需要使用我创建的类来在主模块中创建一个对象。但是根据我自己的经验,我们应该在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"
答案 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__()
。