0

是否可以在实例化时从类中调用方法?

我尝试了以下但不断得到

Base Class:
    class A(object):
    """ Parent class """
    def __init__(self, **kwargs):     

        # query parameters
        self.start_time     = kwargs.get('start_time', None)


    def set_query_starttime(self, str_time):
        """ sets query start time """
        if self.verbosity:
            print("I: Set query start time parameter")

        if not str_time:
            return

        utc_start_time = self._format_time(str_time)

        try:
            self.query.SetStartTime(utc_start_time.tm_year,
                                    utc_start_time.tm_mon,
                                    utc_start_time.tm_mday,
                                    utc_start_time.tm_hour,
                                    utc_start_time.tm_min,
                                    utc_start_time.tm_sec)

        except pythoncom.com_error as error:
            e = format_com_message("Failed to format date")
            raise Error(e)

我想实例化基类并在实例化类时调用 set_query_starttime 方法:

myStartTime = "Sun Nov 03 20:00:00 2013"
myEndTime = "Sun Nov 03 21:00:00 2013"

test = A(start_time = A.set_query_starttime(myStartTime))

但不断得到: TypeError: unbound method set_query_starttime() must be called with A instance as first argument (got str instead)

我什至尝试将@staticmethod 添加到基类的 set_query_starttime 函数中,但仍然出现相同的错误。

4

2 回答 2

0

只需在类实例化时传入字符串并调用 __init__ 中的方法。

class A(object):
""" Parent class """
def __init__(self, start_time=None):     
    if start_time:
        self.set_query_starttime(start_time)

...etc...

然后将其用作:

myStartTime = "Sun Nov 03 20:00:00 2013"
myEndTime = "Sun Nov 03 21:00:00 2013"

test = A(start_time=myStartTime)
于 2013-11-06T20:29:09.467 回答
0

这是因为您试图在没有先创建实例的情况下调用类中的函数。然后这个方法是未绑定的。

要解决此问题,您可以A().set_query_starttime使用实例调用该函数。

temp = A().set_query_starttime(myStartTime)
test = A(start_time=temp)
于 2013-11-06T20:06:18.050 回答