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()