调用类函数python

时间:2016-09-18 17:57:14

标签: python class python-3.x import

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。我已经尝试了很多东西,到目前为止还没有任何工作。我离开这里还是愚蠢的。

1 个答案:

答案 0 :(得分:0)

错误不是没有set_item;错误是由于您尚未初始化而导致所需的位置参数self未被隐式传递。

当调用函数类实例时,它们成为该实例上的绑定方法,并且实例总是(除非是修饰)隐式传递为第一个参数。

简而言之,初始化一个mechanize实例,然后调用这些函数,即:

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