相关疑难解决方法(0)

来自对象字段的Python字典

你知道是否有一个内置函数来从任意对象构建一个字典?我想做这样的事情:

>>> class Foo:
...     bar = 'hello'
...     baz = 'world'
...
>>> f = Foo()
>>> props(f)
{ 'bar' : 'hello', 'baz' : 'world' }
Run Code Online (Sandbox Code Playgroud)

注意:它不应包括方法.只有字段.

python attributes dictionary metaprogramming object

309
推荐指数
13
解决办法
33万
查看次数

如何创建对象并向其添加属性?

我想在Python中创建一个动态对象(在另一个对象内),然后为其添加属性.

我试过了:

obj = someobject
obj.a = object()
setattr(obj.a, 'somefield', 'somevalue')
Run Code Online (Sandbox Code Playgroud)

但这没用.

有任何想法吗?

编辑:

我从for循环中设置属性,循环遍历值列表,例如

params = ['attr1', 'attr2', 'attr3']
obj = someobject
obj.a = object()

for p in params:
   obj.a.p # where p comes from for loop variable
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我会得到obj.a.attr1,obj.a.attr2,obj.a.attr3.

我使用了这个setattr函数因为我不知道怎么做obj.a.NAME一个for循环.

如何根据p上面示例中的值设置属性?

python attributes class object

279
推荐指数
9
解决办法
30万
查看次数

Python标准库中类似JavaScript的对象?

很多时候,我发现自己想在Python中使用一个简单的"转储"对象,其行为类似于JavaScript对象(即,其成员可以使用.member或使用['member']).

通常我会把它放在以下的顶部.py:

class DumbObject(dict):
    def __getattr__(self, attr):
        return self[attr]
    def __stattr__(self, attr, value):
        self[attr] = value
Run Code Online (Sandbox Code Playgroud)

但这有点蹩脚,并且该实现至少存在一个错误(尽管我不记得它是什么).

那么,标准库中有类似的东西吗?

并且,为了记录,简单的实例化object不起作用:

>>> obj = object()
>>> obj.airspeed = 42
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'object' object has no attribute 'airspeed'

编辑 :(当,应该看到这一个来了)...别担心!我不是想用Python编写JavaScript.我经常发现我想要的地方就是在我还在试验的时候:我有一些"东西"的集合,这些东西不太适合放入字典,但也不适合拥有自己的课程.

python

20
推荐指数
5
解决办法
9744
查看次数

标签 统计

python ×3

attributes ×2

object ×2

class ×1

dictionary ×1

metaprogramming ×1