由於python 沒有抽象類、接口的概念,所以要實現這種功能得abc.py 這個類庫,具體方式如下
from abc import ABCMeta, abstractmethod
#抽象類
class Headers(object):
__metaclass__ = ABCMeta
def __init__(self):
self.headers = ''
@abstractmethod
def _getBaiduHeaders(self):pass
def __str__(self):
return str(self.headers)
def __repr__(self):
return repr(self.headers)
#實現類
class BaiduHeaders(Headers):
def __init__(self, url, username, password):
self.url = url
self.headers = self._getBaiduHeaders(username, password)
def _getBaiduHeaders(self, username, password):
client = GLOBAL_SUDS_CLIENT.Client(self.url)
headers = client.factory.create('ns0:AuthHeader')
headers.username = username
headers.password = password
headers.token = _baidu_headers['token']
return headers
如果子類不實現父類的_getBaiduHeaders方法,則拋出TypeError: Can't instantiate abstract class BaiduHeaders with abstract methods 異常
