zope.component的简单例子
from zope.interface import Interface, Attribute, implements from zope.component import adapts, getAdapter, getUtility, getGlobalSiteManager # Interface class IPerson(Interface): name = Attribute("Name") email = Attribute("Email Address") phone = Attribute("Phone Number") class IPersonAdapter(Interface): def showName(): """showName""" def showMail(): """showMail""" class IUtility(Interface): def doSomething(): """doSomething""" # Implements class Person(object): implements(IPerson) name = None email = None phone = None class PersonAdapter(object): implements(IPersonAdapter) adapts(IPerson) def __init__(self, person): self.person = person def showName(self): print(self.person.name) def showMail(self): print(self.person.email) class Utility(object): implements(IUtility) def doSomething(self): print("doSomething") if __name__ == '__main__': gsm = getGlobalSiteManager() # use Adapter gsm.registerAdapter(PersonAdapter) person = Person() person.name = "William" person.email = "admin@qq.com" person.phone = "000000" personAd = getAdapter(person, IPersonAdapter) personAd.showName() # use Utility utility = Utility() gsm.registerUtility(utility, IUtility) getUtility(IUtility).doSomething()