相关疑难解决方法(0)

如何克服"datetime.datetime而不是JSON可序列化"?

我有一个基本的词典如下:

sample = {}
sample['title'] = "String"
sample['somedate'] = somedatetimehere
Run Code Online (Sandbox Code Playgroud)

当我尝试做的时候,jsonify(sample)我得到:

TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable

我能做些什么,以便我的字典样本可以克服上述错误?

注意:虽然它可能不相关,但字典是从mongodb中检索记录生成的,当我打印输出时str(sample['somedate']),输出是2012-08-08 21:46:24.862000.

python json

626
推荐指数
19
解决办法
44万
查看次数

什么是Python的var_dump()的Python等价物?

在PHP中调试时,我经常发现在我的代码中简单地插入var_dump()以向我展示变量是什么,它的值是什么,以及它包含的任何内容都是相同的.

什么是一个很好的Python相当于此?

php python debugging

401
推荐指数
7
解决办法
26万
查看次数

我如何查看Python对象?

我开始使用Python编写各种项目代码(包括Django Web开发和Panda3D游戏开发).

为了帮助我理解正在发生的事情,我想基本上"查看"Python对象内部以查看它们如何勾选 - 就像它们的方法和属性一样.

所以说我有一个Python对象,我需要打印出它的内容?这甚至可能吗?

python introspection

266
推荐指数
13
解决办法
28万
查看次数

列出对象的属性

有没有办法获取类实例上存在的属性列表?

class new_class():
    def __init__(self, number):
        self.multi = int(number) * 2
        self.str = str(number)

a = new_class(2)
print(', '.join(a.SOMETHING))
Run Code Online (Sandbox Code Playgroud)

期望的结果是将输出"multi,str".我希望这能看到脚本各个部分的当前属性.

python class python-3.x

256
推荐指数
12
解决办法
51万
查看次数

如何获得对象的方法和属性的完整列表?

dir(re.compile(pattern)) 
Run Code Online (Sandbox Code Playgroud)

不会将模式作为列表元素之一返回.即它返回:

['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn']
Run Code Online (Sandbox Code Playgroud)

根据手册,它应该包含

对象的属性名称,类的属性名称,以及类的基类属性的递归.

它也说

该清单未必完整.

有没有办法完成清单?我总是认为dir会返回一个完整的列表,但显然它没有......

另外:有没有办法只列出属性?还是只有方法?

编辑:这实际上是python中的一个错误 - >据说它在3.0分支中修复(也许在2.6中)

python

217
推荐指数
5
解决办法
32万
查看次数

自定义类型的对象作为字典键

我必须做什么才能将自定义类型的对象用作Python字典中的键(我不希望"对象id"充当键),例如

class MyThing:
    def __init__(self,name,location,length):
            self.name = name
            self.location = location
            self.length = length
Run Code Online (Sandbox Code Playgroud)

如果名称和位置相同,我想使用MyThing作为被认为相同的键.从C#/ Java我习惯于必须覆盖并提供equals和hashcode方法,并承诺不会改变hashcode所依赖的任何内容.

我必须在Python中做些什么才能实现这一目标?我应该吗?

(在一个简单的例子中,就像这里一样,或许最好只将(名称,位置)元组作为键 - 但考虑我希望键是一个对象)

python dictionary

179
推荐指数
4
解决办法
9万
查看次数

打印Python类的所有属性

我有一个类动物,有几个属性,如:


class Animal(object):
    def __init__(self):
        self.legs = 2
        self.name = 'Dog'
        self.color= 'Spotted'
        self.smell= 'Alot'
        self.age  = 10
        self.kids = 0
        #many more...
Run Code Online (Sandbox Code Playgroud)

我现在想要将所有这些属性打印到文本文件中.我现在这样做的丑陋方式就像:


animal=Animal()
output = 'legs:%d, name:%s, color:%s, smell:%s, age:%d, kids:%d' % (animal.legs, animal.name, animal.color, animal.smell, animal.age, animal.kids,)
Run Code Online (Sandbox Code Playgroud)

有更好的Pythonic方法吗?

python oop

150
推荐指数
5
解决办法
21万
查看次数

迭代python中的对象属性

我有一个python对象,有几个属性和方法.我想迭代对象属性.

class my_python_obj(object):
    attr1='a'
    attr2='b'
    attr3='c'

    def method1(self, etc, etc):
        #Statements
Run Code Online (Sandbox Code Playgroud)

我想生成一个包含所有对象属性及其当前值的字典,但我想以动态的方式进行(所以如果以后我添加另一个属性,我也不必记得更新我的函数).

在PHP中,变量可以用作键,但是python中的对象是不可编写的,如果我使用点符号,它会创建一个名为my var的新属性,这不是我的意图.

只是为了让事情更清楚:

def to_dict(self):
    '''this is what I already have'''
    d={}
    d["attr1"]= self.attr1
    d["attr2"]= self.attr2
    d["attr3"]= self.attr3
    return d
Run Code Online (Sandbox Code Playgroud)

·

def to_dict(self):
    '''this is what I want to do'''
    d={}
    for v in my_python_obj.attributes:
        d[v] = self.v
    return d
Run Code Online (Sandbox Code Playgroud)

更新:使用属性我只是指这个对象的变量,而不是方法.

python oop iteration attributes

137
推荐指数
3
解决办法
13万
查看次数

如何在Python中枚举对象的属性?

IC#我们通过反思来做到这一点.在Javascript中它很简单:

for(var propertyName in objectName)
    var currentPropertyValue = objectName[propertyName];
Run Code Online (Sandbox Code Playgroud)

怎么用Python做?

python reflection properties

116
推荐指数
7
解决办法
13万
查看次数

循环遍历python中类的所有成员变量

如何获得可迭代的类中的所有变量的列表?有点像locals(),但对于一个类

class Example(object):
    bool143 = True
    bool2 = True
    blah = False
    foo = True
    foobar2000 = False

    def as_list(self)
       ret = []
       for field in XXX:
           if getattr(self, field):
               ret.append(field)
       return ",".join(ret)
Run Code Online (Sandbox Code Playgroud)

这应该回来了

>>> e = Example()
>>> e.as_list()
bool143, bool2, foo
Run Code Online (Sandbox Code Playgroud)

python

79
推荐指数
4
解决办法
7万
查看次数