python文件名通常以啥结尾
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件名通常以啥结尾相关的知识,希望对你有一定的参考价值。
python文件后缀一般有两个,分别是.py和.pyw视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。
这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行的文件,
而 .pyw 则被登记为用 pythonw.exe 运行。
.py 和 .pyw 之间的“其它差别”全都是 python.exe 和 pythonw.exe 之间的差别。
跟 python.exe 比较起来,pythonw.exe 有以下的不同:
1)执行时不会弹出控制台窗口(也叫 DOS 窗口)
2)所有向原有的 stdout 和 stderr 的输出都无效
3)所有从原有的 stdin 的读取都只会得到 EOF
.pyw 格式是被设计来运行开发完成的纯图形界面程序的。
纯图形界面程序的用户不需要看到控制台窗口。
值得一提的是,开发纯图形界面程序的时候,你可以暂时把 .pyw 改成 .py ,
以便运行时能调出控制台窗口,看到所有错误信息,方便除虫。 参考技术A python文件名通常以.py结尾,比如test.py
Python 支持有限形式的多重继承。以啥方式限制?
【中文标题】Python 支持有限形式的多重继承。以啥方式限制?【英文标题】:Python supports a limited form of multiple inheritance. In what way limited?Python 支持有限形式的多重继承。以什么方式限制? 【发布时间】:2012-05-27 07:33:11 【问题描述】:在 python 教程中说“Python supports a limited form of multiple inheritance”。
有什么限制?
【问题讨论】:
【参考方案1】:除了@Matt Anderson 的回答,我认为这些限制实际上是针对旧样式类(Python 2.6 still addresses 的教程)。
在 Python 3 教程中,文本现在是:Python supports a form of multiple inheritance as well。
【讨论】:
【参考方案2】:我不确定 python 教程的作者所指的限制是什么,但我猜这部分与在 python 中实现方法/属性查找的方式有关(“方法解析顺序”或MRO)。 Python使用C3 superclass linearization机制;这是为了处理所谓的“The Diamond Problem”。
在您的类层次结构中引入多重继承后,任何给定的类都没有一个可以继承的潜在类,它只有“MRO 中的下一个类”,即使对于那些期望它们继承的类也是如此。特别是从某个类继承。
例如,如果 class A(object)
、class B(A)
、class C(A)
和 class D(B, C)
,则类 D
的 MRO 为 D->B->C->A
。 B 类可能已经被编写,可能是,认为它是 A 的后代,当它对自己调用 super()
时,它会在 A 上获得一个方法。但这不再是正确的;当 B 调用 super()
时,它会在 C 上获得一个方法,如果它存在的话。
如果您在被覆盖的方法中更改方法签名,这可能是一个问题。 B 类在调用 super 时期望来自 A 类的方法的签名,而是从 C 中获取一个方法,该方法可能没有该签名(从 B 类的角度来看,可能会或可能不会实现所需的行为)。
class A(object):
def __init__(self, foo):
print "A!"
class B(A):
def __init__(self, foo, bar):
print "B!"
super(B, self).__init__(foo)
class C(A):
def __init__(self, foo, baaz):
print "C!"
super(C, self).__init__(foo)
class D(B, C):
def __init__(self, foo, bar):
print "D!"
super(D, self).__init__(foo, bar)
print D.mro()
D("foo", "bar")
在此代码示例中,类 B 和 C 合理地扩展了 A,并更改了它们的 __init__
签名,但正确调用了它们预期的超类签名。但是当你像那样做 D 时,B 的有效“超类”变成了 C 而不是 A。当它调用 super 时,事情就爆炸了:
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <type 'object'>]
D!
B!
Traceback (most recent call last):
File "/tmp/multi_inherit.py", line 22, in <module>
D("foo", "bar")
File "/tmp/multi_inherit.py", line 19, in __init__
super(D, self).__init__(foo, bar)
File "/tmp/multi_inherit.py", line 9, in __init__
super(B, self).__init__(foo)
TypeError: __init__() takes exactly 3 arguments (2 given)
同样的事情也可能发生在其他方法上(如果它们调用super()
),并且“钻石”不必只出现在类层次结构的根部。
【讨论】:
这一切都是真的,但是任何具有多重继承的语言都必须处理这些问题。如果我们假设您的答案是正确的,那么哪种语言(带有 MI)不会具有有限形式的多重继承?以上是关于python文件名通常以啥结尾的主要内容,如果未能解决你的问题,请参考以下文章
Linux下怎么建立任务计划,shell文件是做啥的?以啥为后缀,前两者之间有啥关系