返回信息流```python
class A(object):
def __init__(self):
print self.__class__
class B(A):
def __init__(self):
print self.__class__
super(self.__class__, self).__init__()
class C(B):
def __init__(self):
print self.__class__
super(self.__class__, self).__init__()
c = C()
```
上面一段代码,我期望得到的输出是:
```
<class '__main__.C'>
<class '__main__.B'>
<class '__main__.A'>
```
但是你猜实际上输出的是啥。。。(悲伤
求解如何输出我想要的结果。。。
这是一条镜像帖。来源:北邮人论坛 / python / #14512同步于 2016/6/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[问题]果然又被Python坑了
Wizmann
2016/6/14镜像同步20 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
因为self.__class__在任何地方都是同一个值吧。
试试这个:
```python
from __future__ import print_function
class A(object):
def __init__(self):
print(__class__)
class B(A):
def __init__(self):
print(__class__)
super().__init__()
class C(B):
def __init__(self):
print(__class__)
super().__init__()
c = C()
```
输出:
```
<class '__main__.C'>
<class '__main__.B'>
<class '__main__.A'>
```
仅适用于Python3。参考:https://www.python.org/dev/peps/pep-3135
py3都是异端!
主要是整个项目都是py2写的,虽然没多少行,再引入额外的复杂度就不太值得了。
稍微修了一下,反正也在work了。。。
【 在 nuanyangyang 的大作中提到: 】
: [md]
: 因为self.__class__在任何地方都是同一个值吧。
: 试试这个:
: ...................
这是什么项目啊,我只知道目前只有两个项目只支持py2,它们是mercurial和scrapy。
【 在 Wizmann 的大作中提到: 】
: py3都是异端!
: 主要是整个项目都是py2写的,虽然没多少行,再引入额外的复杂度就不太值得了。
: 稍微修了一下,反正也在work了。。。
: ...................
【 在 nuanyangyang 的大作中提到: 】
: 这是什么项目啊,我只知道目前只有两个项目只支持py2,它们是mercurial和scrapy。
自己用twisted做的东西,本来twisted就是全新不会的。再上py3就是给自己找麻烦了。。。
以后再说吧。
【 在 Wizmann 的大作中提到: 】
:
: 自己用twisted做的东西,本来twisted就是全新不会的。再上py3就是给自己找麻烦了。。。
: 以后再说吧。
好吧。另外要不要试试Java和Netty?
Java大邪教!23333
关键是没有Java经验。。。Python那一套还算的上熟练。。。
慢慢来
【 在 nuanyangyang 的大作中提到: 】
:
: 好吧。另外要不要试试Java和Netty?
twisted有些重了,不知道你是什么项目,试过gevent吗
【 在 Wizmann 的大作中提到: 】
:
: 自己用twisted做的东西,本来twisted就是全新不会的。再上py3就是给自己找麻烦了。。。
: 以后再说吧。