निपुणता वस्तुओं एक स्कीमा, जो गणनीय है द्वारा परिभाषित कर रहे:
from zope.interface.interfaces import IMethod
for name, desc in IYourDexteritySchema.namesAndDescriptions():
value = getattr(yourDexterityInstance, name)
if IMethod.providedBy(desc):
# It's a method, call it
value = value()
यहाँ मैं .namesAndDescriptions()
method उपयोग करें, लेकिन आप भी सिर्फ एक इटरेटर के रूप में इंटरफ़ेस का उपयोग कर सकते हैं अगर आप पर कोई तरीकों की जरूरत नहीं है अपने स्कीमा:
for name in IYourDexteritySchema:
value = getattr(yourDexterityInstance, name)
इतना ही नहीं बल्कि, zope.schema
getFieldsInOrder
नाम के एक उपयोगिता विधि है कि एक अंतरफलक में zope.schema
खेतों पर फिल्टर करेगा है; ऊपर तरीकों में भी तरीके और गैर स्कीमा विशेषताओं की सूची बनाना, getFieldsInOrder
केवल zope.schema
विशिष्ट विशेषता प्रकार सूचीबद्ध करता है:
from zope.schema import getFieldsInOrder
for name, field in getFieldsInOrder(IYourDexteritySchema):
value = getattr(yourDexterityInstance, name)
यदि आप स्कीमा के माध्यम से-वेब, आप के लिए इंटरफ़ेस को देखने के लिए कैसे पता नहीं हो सकता अपने प्रकार। तुम भी कम के लिए फैक्टरी प्रकार सूचना, या FTI के माध्यम से स्कीमा इंटरफेस को पुनः प्राप्त कर सकते हैं:
from plone.dexterity.interfaces import IDexterityFTI
from zope.component import getUtility
schema = getUtility(IDexterityFTI, name='your.dexterity.type').lookupSchema()
जहां schema
अब अपनी इंटरफ़ेस रखती है।
स्रोत
2012-08-29 13:09:18
नोट: सभी उत्तर यहाँ केवल खेतों मुख्य अंतरफलक पर, नहीं दे फ़ील्ड जिन्हें व्यवहार द्वारा जोड़ा जा सकता है। दुर्भाग्यवश उनको प्रतिपादन प्रपत्रों के हिस्से के रूप में समझा जाता है, और वर्तमान में प्रपत्र प्रतिपादन प्रक्रिया के बाहर उन्हें गिनने का एक अच्छा तरीका नहीं है। –