【问题标题】:Python Object Oriented ProgrammingPython 面向对象编程
【发布时间】:2016-12-15 00:56:40
【问题描述】:

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

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

这是我目前所拥有的:

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()

我不知道调用类方法的正确方法。我觉得如果我能弄清楚如何完成其​​中一项工作,我就能弄清楚其余的。

【问题讨论】:

  • 请阅读OOP in Python。您将能够自己解决问题
  • 你试过什么?请阅读this

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


【解决方案1】:

如果您想更深入地了解行为和属性,我建议您为每个值创建一个单独的行为。 (get_credit_num、get_debit_num 等) 然后,在您的 main 中,只需单独调用每个函数来获取每个值。

澄清一下,“类函数”或行为只是对象可以做的事情。您调用它们的方式与调用任何函数的方式相同,唯一的区别是您将调用此行为的实例的名称放在替换“self”的函数之前。因此,如果您为对象 customer1 调用“InputCardInfo”,您可以这样做:

customer1.InputCardInfo(other parameters)

【讨论】:

    【解决方案2】:

    您的代码将无法正常工作,因为您在初始化类时没有传递所有必需的参数。

    customer1 = Customer(customer_name)

    在你的def __init__(self, var1, var2, var3): 中包含的除了self 之外的所有附加参数都需要在初始化时传递给类实例。您的代码也存在变量命名问题,但我希望下面的示例可以为您澄清问题。

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

    class Customer:
    
        def __init__(self, customer_name, credit_card_num, credit_security_code, debit_card_num, debit_pin):
            self.customer_name = customer_name
            self.credit_card_num = credit_card_num
            self.credit_security_code = credit_security_code
            self.debit_card_num = debit_card_num
            self.debit_pin = debit_pin
    
    
    name = 'Mike'
    cc_num = '0000 0000 0000 0000'
    code = '111'
    debit_num = '1111 1111 1111 1111'
    pin = '1234'
    
    new_customer = Customer(name, cc_num, code, debit_num, pin)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2022-10-05
      • 2011-07-09
      相关资源
      最近更新 更多