面向对象的Python编程

时间:2016-12-15 00:56:40

标签: python function python-3.x class oop

我必须编写一个程序来演示客户使用他们的信用卡结账,我花了几个小时试图弄清楚如何做,并在下面提供了我的代码。

我必须创建一个类,然后在main函数中使用它。

这是我到目前为止所做的:

class Customer:

    def __init__(self, customer_name, credit_card_num, credit_security_code, debit_card_num, debit_pin):
        self.customer_name = name
        self.credit_card_num = credit_num
        self.credit_security_code = credit_code
        self.debit_card_num = debit_num
        self.debit_pin = debit_pin


    def inputCardInfo(self):
        self.customer_name = str(input("Enter your name: "))
        self.credit_card_num = str(input("Enter credit card Number: "))
        self.credit_security_code = str(input("Enter 3-digit security code: "))
        self.debit_card_num = str(input("Enter debit card number: "))
        self.debit_pin = str(input("Enter 4-digit PIN: "))

然后是主要功能:

from customer import Customer

def main():
    print("Welcome to Wake-Mart. Please register.")
    customer_name = input("enter name: ")
    customer1 = Customer(customer_name)
    print("Registration completed")

main()

我不知道调用类方法的正确方法。我觉得如果我能弄清楚如何做其中一项工作我可以弄清楚其余部分。

2 个答案:

答案 0 :(得分:0)

如果您想更深入地了解行为和属性,我建议为每个值制定单独的行为。 (get_credit_num,get_debit_num等) 然后,在您的主要部分中,只需单独调用每个函数即可获得每个值。

澄清,"类函数"或行为,只是对象可以做的事情。您可以像调用任何函数一样调用它们,唯一的区别是您在替换函数之前放置了您正在调用此行为的实例的名称" self"。所以如果你打电话给#34; InputCardInfo"对于对象customer1,你会这样做:

customer1.InputCardInfo(other parameters)

答案 1 :(得分:0)

您的代码按原样无效,因为初始化类时未传递所有必需参数。

  

customer1 = Customer(customer_name)

初始化时,self中包含的def __init__(self, var1, var2, var3):以外的所有其他参数都需要传递给类实例。您的代码也存在可变的命名问题,但我希望下面的示例能够为您阐明一些事项。

首先快速说明,以帮助您更好地理解self.customer_name = name在您的代码中没有意义,因为{{1}中没有包含名为name的参数} 方法。您必须将实例变量(__init__())与通过self.whatever方法传入的已知变量名称关联,以便__init__(self, external_var)。然后,只有这样,您才能使用类方法调用self.whatever = external_var并期望接收从self.whatever传递的数据。此外,在external_var self之后包含的其他参数必须在创建类实例时作为变量传递。

__init__(self, ..., ...)