繁体   English   中英

调用类函数python

[英]calling a class function python

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。 我已经尝试了很多东西,到目前为止没有任何效果。 我是不是离这儿很远了,还是有什么蠢事。

错误不是没有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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM