相关疑难解决方法(0)

Python类的__dict __.__ dict__属性是什么?

>>> class A(object): pass
... 
>>> A.__dict__
<dictproxy object at 0x173ef30>
>>> A.__dict__.__dict__
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
AttributeError: 'dictproxy' object has no attribute '__dict__'
>>> A.__dict__.copy()
{'__dict__': <attribute '__dict__' of 'A' objects> ... }
>>> A.__dict__['__dict__']
<attribute '__dict__' of 'A' objects> # What is this object?
Run Code Online (Sandbox Code Playgroud)

如果我这样做A.something = 10,这就进入了A.__dict__.什么这个<attribute '__dict__' of 'A' objects>发现A.__dict__.__dict__,当它包含的东西吗?

python metaprogramming class magic-methods

81
推荐指数
4
解决办法
8万
查看次数

在Python中设置只读属性?

考虑到Python的动态性,如果不可能的话,我会感到震惊:

我想改变执行情况sys.stdout.write.

我从这个答案得到了我的另一个问题的想法:https://stackoverflow.com/a/24492990/901641

我试着写这个:

original_stdoutWrite = sys.stdout.write

def new_stdoutWrite(*a, **kw):
    original_stdoutWrite("The new one was called! ")
    original_stdoutWrite(*a, **kw)

sys.stdout.write = new_stdoutWrite
Run Code Online (Sandbox Code Playgroud)

但它告诉我AttributeError: 'file' object attribute 'write' is read-only.

这是一个很好的尝试,让我不要做一些潜在的(可能)愚蠢的事情,但我真的很想继续这样做.我怀疑解释器有一些我可以修改的查找表,但我在Google上找不到类似的东西.__setattr__也没用 - 它返回了关于属性为只读的完全相同的错误.

我特意寻找Python 2.7解决方案,如果这很重要,虽然没有理由拒绝投入适用于其他版本的答案,因为我怀疑未来的其他人会在这里看到与其他版本类似的问题.

python stdout readonly-attribute python-2.7

14
推荐指数
1
解决办法
9053
查看次数