小编Dee*_*ind的帖子

如何在PyCharm中设置Python 2首选项?

PyCharm是一个很好的IDE,但它的代码提示并不那么聪明.例如,当我用它来编写Python2代码时(我的解释器路径的设置可以告诉PyCharm这个),我输入prin,我希望PyCharm给我一个打印提示,但是,第一个提示是print(),这是一种Python3风格的功能打印.PyCharm中是否有任何设置我可以告诉它在编写Python2代码时不给我Python3提示(当我编写Python3代码时不要给我Python2提示)?

我的PyCharm版本是2.7.1

python pycharm

14
推荐指数
2
解决办法
2万
查看次数

关于Python描述符和<Descriptor HowTo Guide>的混淆

最近我读了关于Python描述符官方HOW-TO,它实际上源于Raymond Hettinger很久以前写的一篇文章.但在阅读了几次之后,我仍然对它的某些部分感到困惑.我将引用一些段落,然后是我的困惑和问题.


如果实例的字典具有与数据描述符同名的条目,则数据描述符优先.如果实例的字典具有与非数据描述符同名的条目,则字典条目优先.

  • 这和班级一样吗?如果类的字典具有与数据/非数据描述符同名的条目,那么它的优先级链是什么?

对于物体,机器在object.__getattribute__()其中转变b.xtype(b).__dict__['x'].__get__(b, type(b)).该实现通过优先级链工作,该优先级链使数据描述符优先于实例变量,实例变量优先于非数据描述符,并且__getattr__()如果提供则赋予最低优先级.

对于课程,机器在type.__getattribute__()其中转变B.xB.__dict__['x'].__get__(None, B).

  • 以上两段告诉了在属性访问时自动调用描述符的过程.它列出了instance(b.x)和class(B.x)访问的属性之间的区别.但是,这是我的困惑:
    • 如果类或实例的属性不是描述符,那么转换(即转换b.xtype(b).__dict__['x'].__get__(b, type(b))B.x转换B.__dict__['x'].__get__(None, B))是否仍会继续?是否更简单地返回此类或实例的dict中的属性?
    • 如果实例的字典有一个与非数据描述符同名的条目,根据第一个引用中的优先级规则,字典条目优先,此时转换是否还会继续?或者只返回其字典中的值?

非数据描述符提供了一种简单的机制,用于将通常的绑定函数模式变为方法.

  • 选择非数据描述符,因为函数/方法只能得到,但不能设置
  • 将函数绑定到方法的基本机制是什么?由于类字典将方法存储为函数,如果我们分别使用类及其实例调用相同的方法,底层函数如何判断其第一个参数是否应该是self

函数有一个__get__()方法,以便在作为属性访问时可以将它们转换为方法.非数据描述符将obj.f(*args)调用转换为f(obj, *args).呼叫klass.f(*args)变为f(*args).

  • 非数据描述符如何将obj.f(*args)调用转换为f(obj, *args)
  • 非数据描述符如何将klass.f(*args)调用转换为f(*args)
  • 上述两种转变的基本机制是什么?为什么类和实例之间存在差异? …

python descriptor

7
推荐指数
1
解决办法
457
查看次数

标签 统计

python ×2

descriptor ×1

pycharm ×1