计算对象python中的项目

时间:2017-02-08 00:06:37

标签: python

当我打印对象时,我得到:     {' 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

1 个答案:

答案 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__函数返回的内容。