2016-04-04 10 views
-1
class BankAccount: 
    def __init__(self, deposit, withdraw, balance): 
    self.balance = balance 
    self.deposit = deposit 
    self.withdraw = withdraw 

    def balance(self): 
     self.balance = balance 

     def withdraw(self, amount): 
     self.balance -= amount 
     print 'self.balance' 
     def deposit(self, amount): 
      self.balance += amount 
      print 'self.balance' 

a = BankAccount(90,40,1000) 
b = BankAccount(90,40,1000) 
a.deposit = 90 
b.deposit = 90 
b.withdraw = 40 
a.withdraw = 1000 

class MinimumBalanceAccount(BankAccount): 
    def __init__(self, minimum_balance=50): 
    BankAccount.__init__(self) 
    self.minimum_balance = minimum_balance 

    def minimum_balance(self): 
     self.minimum_balance = minimum_balance 
     def withdraw(self, amount): 
     if self.balance - amount < self.minimum_balance: 
      print 'Sorry, minimum balance must be maintained.' 

() hatası:Python init Programa yönetmeye çalışıyorum ancak aşağıdaki sözdizimi İç Hata dahili bir hata görüntüler

bir sınıf oluşturun:

THERE IS AN ERROR/BUG IN YOUR CODE 
Results: 
Internal Error: runTests aborted: TestOutcomeEvent(handled=False, test=, result=, outcome='error', exc_info=(, TypeError('__init__() takes exactly 4 arguments (2 given)',),), reason=None, expected=False, shortLabel=None, longLabel=None) is not JSON serializable 

bu soru BankAccount

Create a constructor that takes in an integer and assigns this to a `balance` property. 
Create a method called `deposit` that takes in cash deposit amount and updates the balance accordingly. 
Create a method called `withdraw` that takes in cash withdrawal amount and updates the balance accordingly. if amount is greater than balance return `"invalid transaction"` 
Create a subclass MinimumBalanceAccount of the BankAccount class 

denilen bu test kodu:

import unittest 
class AccountBalanceTestCases(unittest.TestCase): 
    def setUp(self): 
    self.my_account = BankAccount(90) 

    def test_balance(self): 
    self.assertEqual(self.my_account.balance, 90, msg='Account Balance Invalid') 

    def test_deposit(self): 
    self.my_account.deposit(90) 
    self.assertEqual(self.my_account.balance, 180, msg='Deposit method inaccurate') 

    def test_withdraw(self): 
    self.my_account.withdraw(40) 
    self.assertEqual(self.my_account.balance, 50, msg='Withdraw method inaccurate') 

    def test_invalid_operation(self): 
    self.assertEqual(self.my_account.withdraw(1000), "invalid transaction", msg='Invalid transaction') 

    def test_sub_class(self): 
    self.assertTrue(issubclass(MinimumBalanceAccount, BankAccount), msg='No true subclass of BankAccount') 

Bunun nedenini bilmiyorum.

cevap

0

AccountBalanceTestCases'te bir parametre (deposit = 90) ileterek BankAccount'ı başlatmaya çalışıyorsunuz. Diğer taraftan __init__ yöntemi, iki argüman daha bekler, geri çeker ve dengeler.

Bu yürütme sırasında aşağıdaki hata neden olur: Bu init iki argüman (örtük 'self' artı geçti bir) aldı demektir

init() takes exactly 4 arguments (2 given) 

, ama aslında iki tane daha değerler ekleyerek 4. deneyin bekliyor inşaat, gibi bir şey:

self.my_account = BankAccount(90, 100, 110) 

Bu ...

bu hatanın geçmiş alırsınız
İlgili konular