Python Unbound方法错误?

时间:2016-12-13 02:57:35

标签: python class inheritance

我正在尝试从这个类继承:

class Event(Clock, Calendar):

    def __init__(self):
        year,month,day, hours, minutes,seconds = time.localtime()[0:6]

        eClock = Clock(hours,minutes,0)
        eCal = Calendar(month, day, year)

    def createEvent(self,year,month,day,hours,minutes):
        year,month,day = date[0:]
        hours,minutes = ttime[0:2]

要在此处创建活动:

sett = line[1:].split(",") # Line[1:] is going to be a
                           # date, such as 1/8/17 17:50.
date = sett[0]
ttime = sett[1]
ttime = ttime.split(":")
date = date.split("/")
Cevent = ttime + date
Cevent.event()

我还有另一个名为Reminder的课程:

event = Event.createEvent()

我尝试运行这个程序时,它给了我这个错误:

  

TypeError:必须使用Event调用未绑定方法createEvent()   实例作为第一个参数(没有取而代之)

我想知道为什么,以及如何将方法createEvent用于同一文件中的另一个类。

1 个答案:

答案 0 :(得分:0)

绑定方法意味着从类中调用该方法。让我们看一个例子:

class MyClass:
    def add(self, x, y):
        return x+y

VS

def add_numbers(x, y):
    return x+y

方法add_numbers()是一个未绑定的方法,这意味着它没有附加到任何类实例。要使用它,我们可以致电:

print(add_numbers(1, 2))

但是,当我们想调用方法add()时,我们需要MyClass类的实例

class_instance = MyClass()
print(class_instance.add(1, 2))

注意,当我们想要调用add()方法时,我们首先要创建一个类的新实例,然后使用它来调用方法,在引擎盖下,python接受 class_instance 变量并将其作为“自我”传递给方法。在函数定义中看到的参数。

最后,您的问题在于:

event = Event.createEvent()

错误告诉您该方法期望事件类的实例,而不是类本身。如果可以在没有参数的情况下实例化Event类,那么正确的语法将是:

base_event = Event()
event = base_event.createEvent()

当然,实例化 base_event 变量的方法取决于您尝试使用的API。