2016-09-18 9 views
-1
class merchandise: 
    def __init__(self, item, quantity, cost): 
     self.__item = item 
     self.__quantity = quantity 
     self.__cost = cost 
    def set_item(self, item): 
     self.__item = item 
    def set_quantity(self, quantity): 
     self.__quantity = quantity 
    def set_cost(self, cost): 
     self.__cost = cost 
    def get_item(self): 
     return self.__item 
    def get_quantity(self): 
     return self.__quantity 
    def get_cost(self): 
     return self.__cost 
    def get_inventory_value(self): 
     return (format(self.__quantity * self.__cost, '.2f')) 
    def __str__(self): 
     for i in merchandise: 
      print (self.__item+',', self.__quantity,'@ $'+(format (self.__cost,'.2f'))) 

import merchandise 
def main(_): 
    def make_list(): 
     for count in range (1,3): 

      merchandise.set_item("hammer") 
      merchandise.set_quantity(10) 
      merchandise.set_cost(14.95) 
      print(hammer) 

      hardware = float (input ('Enter a new quantity for hardware ')) 
      jewelry = float (input ('Enter a new cost for jewelry ')) 
      hammer = merchandise.merchandise() 

    stuff = make_list() 
    print (stuff) 
main() 

私は何が間違っているのか分かりません。商品にset_itemがありません。私はかなりのことを試してきましたが、これまで何も働いていませんでした。私はここから離れているか、それは何かばかげたことですか?クラス関数を呼び出すPython

+0

あなたがインスタンス化/ – Li357

+0

を初期化する必要があり、別のファイルまたは1つのファイルにクラスとの主ですか?別に、あなたが '商品を輸入する '、'商品 'がモジュールオブジェクトである場合、' merchandise.merchandise'はクラスです。 _Class_には 'set_item'メソッドがありません。一方、_Class instances_は 'set_item'メソッドを持っています。 –

答えて

0

エラーはありません。set_itemではありません。このエラーは、初期化していないという事実と、結果として必要な位置指定の引数selfが暗黙的に渡されなかったために発生します。

ファンクションクラスインスタンスを呼び出すと、そのインスタンスのバインドメソッドになり、インスタンスは最初の引数として暗黙に渡されます(装飾されている場合を除く)。要するに

、すなわち、関数を呼び出すその後、機械化インスタンスを初期化して:設定が必要とされていないことを

m = merchandise('', 10, 0.0) 
m.set_item("hammer") 
m.set_quantity(10) 
m.set_cost(14.95) 

注意を、あなたは初期化時にこれらを提供することができます。

また
m = merchandise('hammer', 10, 14.95) 

、定義しているモジュールでインポートすることはできません(そうしている場合)、通常はエラーが発生します。それは別のモジュールである場合は、あまりにも実際のクラスをインポートしてください:

from merchandise import merchandise 
+0

私はそれを試みましたが、それがエラーではない場合は、 m = merchandise.merchandise( 'ハンマー'、10,14.95) ですが、 (ハンマー)またはプリント(m)の場合

関連する問題