在对象创建之后调用方法

时间:2015-11-25 00:14:52

标签: python multithreading constructor

请考虑以下示例代码:

class Server:
    def __init__(self):
        self.start_listening()

    def start_listening(self):
        while True:
            pass

我认为对象永远不会以这种方式创建。

当我创建一个新的Server对象时,我希望在构造函数执行完毕并且已经创建了对象之后调用start_listening()方法。

我不想手动调用该方法,如下所示:

s = Server()
s.start_listening()

我该怎么办?我应该在init()中创建一个新线程吗?

另外,假设代替start_listening()实际上永远不会终止,我们可以在构造函数之外使用一个非常慢的方法。

处理这种情况的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以派生或汇总。

推导:

class AutoServer(Server):
    def __init__(self):
        Server.__init__(self)
        self.start_listening()

集结:

class AutoServer(object):
    def __init__(self):
        self.server = Server()
        self.server.start_listening()

答案 1 :(得分:0)

我认为你可以在一个函数中执行一个函数,并且不一定需要self.start_listening。请务必正确缩进。

所以:

Class Server: 
  def init(self): 
      def start_listening(self):
          while true:   
          pass