当我打印对象时,我得到: {' ip':' ip',' ip1':' hi'}
但是,如果我尝试打印我得到的长度:
Traceback (most recent call last):
print len(options)
AttributeError: Values instance has no attribute '__len__'
我只需要知道该对象中有多少项(看起来只是一本字典)。
以下是整个代码:
#!/usr/bin/python
from inspect import getmembers
from optparse import OptionParser
parser = OptionParser()
parser.add_option('-a', '--allow',
action="store", dest="ip",
help="query string", default="spam")
parser.add_option('-d', '--deny',
action="store", dest="ip1",
help="query string", default="spam")
options, args = parser.parse_args()
print 'Query string:', options.ip
print 'Query string:', options.ip1
count=0
for i in options:
count+=1
print count
if 1:
print "Max number of options 1"
exit
答案 0 :(得分:1)
DATABASE_ROUTERS = ['path.to.AuthRouter', 'path.to.PrimaryReplicaRouter']
不是字典。它是options
对象,它是Values
方法的返回值的组件之一。
在上面的代码示例中,请注意您使用parse_args()
而不是options.ip
的方式。因此,dict键看起来像是对象options['ip']
的实例变量。因此,可以使用options
函数将它们检索为字典:
vars()
如果查看source,您会发现d = vars(options)
print len(d)
类未实现Values
但 实施__len__
}:
__str__
(链接源中的第843-844行)
这是您在使用def __str__(self):
return str(self.__dict__)
时看到的内容,而print options
是__dict__
函数返回的内容。