我试图了解何时以及如何正确使用Python中的super()(2.7.x或3.x)
在>>> help(super)口译员告诉我如何称呼它:
class super(object)
| super(type) -> unbound super object
| super(type, obj) -> bound super object; requires isinstance(obj, type)
| super(type, type2) -> bound super object; requires issubclass(type2, type)
Run Code Online (Sandbox Code Playgroud)
我明白在Python3.x中,现在可以在类定义中使用super(),但我不明白为什么super(obj)不可能.或者super(self)在类定义中.
我知道必须有理由,但我找不到它.对我来说,这些线条相当于super(obj.__class__, obj)或者super(self.__class__, self)那些可以正常工作吗?
我认为super(obj)即使在Python 3.x中输入也是一个很好的捷径.
当Guido 谈到 Tulip时,我参加了SF Python聚会,Tulip是Python中异步操作的未来asyncIO库.
该带走的是,如果你想要的东西被异步运行,你可以使用"yield from" + expression和几个装饰的指定后随之而来的通话yield from应该异步执行.关于它的好处是你可以正常读取该函数中的语句(就好像它是同步的),并且它的行为就好像它在执行该函数时是同步的(返回值和错误/异常传播和处理) ).
我的问题是:为什么没有相反的行为,即默认情况下所有函数调用都是异步的(并且没有yield from),并且当你想同步执行某些东西时,它们有不同的显式语法?
(除了需要另一个关键字/语法规范)
我正在阅读有关各种语言的内存管理以及Objective-C没有托管内存这一事实,因为它会导致移动应用程序的用户体验断断续续.
我知道ARC没有处理循环引用,而Python的GC也没有.
我知道ARC根本不是垃圾收集器,因此它不会停止执行主程序来执行内存管理.
Python可以使用混合方法吗?利用ARC的一些优点,同时更少地运行GC(或者更短的时间),以便它仍然可以处理循环引用?
或者像在Python社区中尝试的那样?
编辑:我知道Python使用引用计数,但据我所知,引用降至0的对象不会立即从内存中删除(ARC会这样做).我想知道是否立即释放该对象占用的内存可以使Python更适合在低内存环境中使用,并且因为在这种情况下GC可能运行得更少,它会导致更少的线程中断.就UX而言,这两件事对于移动应用程序来说都是理想的选择.