0

TypeError: 'モジュール' オブジェクトは呼び出し可能ではありません。なぜこれが起こっているのか理解できません。

import RetailItem
import CashRegister

def main():
    #info1 = ['Jacket', '12', '59.95']
    #info2 = ['Designer', '40', '34.95']
    #info3 = ['Shirt', '20', '24.95']

    print ('there are three items')
    info1 = str(input('whats the description'))
    info2 = str(input('whats the units'))
    info3 = str(input('whats the price'))

    info4 = str(input('whats the description'))
    info5 = str(input('whats the units'))
    info6 = str(input('whats the price'))

    info7 = str(input('whats the description'))
    info8 = str(input('whats the units'))
    info9 = str(input('whats the price'))


    first = CashRegister.RetailItem(info1,info2,info3)
    second = CashRegister.RetailItem(info4,info5,info6)
    third = CashRegister.RetailItem(info7,info8,info9)

    #first1 = CashRegister.CashRegister(info1[0],info1[1],info1[2])
    print ("Description       Units in Inventory          Price\n")


    #print(first.show_items())


    print (first.__str__())
    print (second.__str__())
    print (third.__str__())



#main function
4

2 に答える 2

1

エラー メッセージは、RetailItem がモジュールであり、関数のように呼び出すことができないことを示しています。これは、ここで行っていることです。

CashRegister.RetailItem(info1,info2,info3)

「関数のように呼び出す」とは、名前の後に (...) を書いていることを意味します。インポートステートメントは次のとおりです。

import RetailItem

したがって、RetailItem がモジュールであることを認識する必要があります。RetailItem モジュール内で定義された do_stuff() という名前の関数がある場合、次のように呼び出すことができます。

val = RetailItem.do_stuff()

一方、RetailItem が CashRegister モジュール内で定義された関数である場合は、次のことを行うだけです。

import CashRegister


val = CashRegister.RetailItem(...)

RetailItem は実際にはクラスのように見えますが、Python でオブジェクトを作成するのは関数を呼び出すのと同じです。

于 2013-05-02T02:54:35.433 に答える
0

moduleは、python ファイルのみをインポートしたことを意味しますが、必ずしもその中に何かをインポートしたわけではありません。ファイル内に Python ファイルと同じ名前のクラスがある場合は、from RetailItem import RetailItem. 初めての人にとっては奇妙なものです。

于 2013-05-02T02:54:44.437 に答える