Python 将对象传递到函数时出现类型错误

Python 将对象传递到函数时出现类型错误,python,python-3.x,tkinter,parameters,typeerror,Python,Python 3.x,Tkinter,Parameters,Typeerror,对于一个学校项目,我正在为当地的托儿所创建一个计费系统。每个票据都是一个对象,具有以下属性:从第一个月开始到票据起始,从最后一个月结束到票据目的,以及childName 类别计算单位账单: 定义初始自我、开始月、结束月、孩子名: self.startmonth=startmonth self.endmonth=endmonth self.childName=childName` 我使用了tkinter下拉列表来获取所需月份,并将所选月份传递到函数中。然而,当我尝试运行这个时,我得到了错误 Typ

对于一个学校项目,我正在为当地的托儿所创建一个计费系统。每个票据都是一个对象,具有以下属性:从第一个月开始到票据起始,从最后一个月结束到票据目的,以及childName

类别计算单位账单: 定义初始自我、开始月、结束月、孩子名: self.startmonth=startmonth self.endmonth=endmonth self.childName=childName` 我使用了tkinter下拉列表来获取所需月份,并将所选月份传递到函数中。然而,当我尝试运行这个时,我得到了错误

TypeError:startmonth缺少1个必需的位置参数:“bill”

不知道这意味着什么,也不知道如何解决。如有任何建议,将不胜感激

def startmonth(self, m1, bill):
    bill.startmonth = m1
    print(bill.startmonth)

我试图理解您共享的代码,我假设startmonth是calculate_bill类的一种方法,到目前为止一切正常,但您缺少两件事:

函数和类属性不明确,startmonth是属性和方法的名称。将其中一个更改为其他内容

函数startmonth已经收到账单:它被称为self,所以您不需要将账单作为参数通过。实例方法的第一个参数始终是它自己,传统上称为self,尽管不一定

这是一个更有效的表示您试图做什么:

class CalculateBill:
    def __init__(self, startmonth, endmonth, childName):
        self.startmonth = startmonth
        self.endmonth = endmonth
        self.childName = childName`

    def set_startmonth(self, m1):
        self.startmonth = m1
        print(self.startmonth)
关于此代码的一些提示:

尝试使用CamelCase作为类名,这样可以更容易地识别它们。 set_startmonth不需要bill参数。它已经有了它,与自我。 编写方法来设置实例属性是完全正常的,请阅读setter
请添加收到错误时正在运行的代码,该错误意味着您在调用该方法时没有向该方法传递足够的参数显示调用startmonth的代码。它是在类中定义的吗?如果没有,为什么它有一个自参数?不确定这意味着什么:可能的解释:def startmonth。。。不是一个类方法。因此,您传递的两个参数m1,bill,从左到右赋值。第三个参数bill无法实现,导致:必需的位置参数:“bill”