2016-12-15 16 views
-2

私は、クレジットカードを使って顧客がチェックアウトすることを実証するプログラムを書く必要があります。私は数時間かけてそれを行う方法を理解しようとしています。Pythonオブジェクト指向プログラミング

私はクラスを作成し、それをメイン関数で使用する必要があります。

これは私がこれまで持っているものです。その後、

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

私はクラスのメソッドを呼び出すための正しい方法を知りません。私はこれらの仕事の一つをどのようにして作り出すかを理解することができれば、残りを把握することができます。

+0

[OOP in Python](http://anandology.com/python-practice-book/object_oriented_programming.html)をお読みください。自分で問題を解決することができます –

+0

何を試しましたか? [this](http://stackoverflow.com/help/mcve)をお読みください。 –

答えて

0

動作とプロパティをより深く理解したい場合は、それぞれの値に対して個別の動作を行うことをお勧めします。 (get_credit_num、get_debit_numなど) 次に、あなたのメインで、各関数を個別に呼び出して各値を取得してください。

明確にするために、「クラス関数」または動作は、オブジェクトが行うことができるものです。関数と同じ方法で呼び出すことができます。唯一の違いは、 "self"を置き換える関数の前にこの振る舞いを呼び出すインスタンスの名前を入れることです。だから、あなたがオブジェクトcustomer1のための「InputCardInfo」を呼び出していた場合、あなたはそのようにそれを行うだろう:あなたのクラスを初期化する際に必要なすべてのパラメータを渡していないので、そのまま

customer1.InputCardInfo(other parameters) 
0

あなたのコードは動作しません。初期化時にクラスインスタンスに渡されるためにあなたのdef __init__(self, var1, var2, var3):ニーズに含まself以外

customer1 = Customer(customer_name)

追加パラメータのすべてを。あなたのコードには変数ネーミングの問題もありますが、以下の私の例があなたのことを明確にしてくれることを願っています。最初

簡単なメモ方が良いを理解するのに役立つ:__init__()方法に含まnameという名前のパラメータがないのでself.customer_name = nameは、あなたのコード内で意味がありません。インスタンス変数(self.whatever)を__init__(self, external_var)メソッドで渡された既知の変数名に関連付けて、self.whatever = external_varにする必要があります。次に、クラスメソッドを使用してself.whateverを呼び出し、渡されたデータをexternal_varから受け取ることを期待できます。また、selfの後に追加のパラメータ__init__(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) 
関連する問題