当前位置: 首页 > 面试题库 >

给self参数命名

冯庆
2023-03-14
问题内容

在Python中,此代码有效:

class A:

    def __init__(me):
        me.foo = 17

    def print_foo(myself):
        print(myself.foo)

    def set_foo(i, v):
        i.foo = v

正如你可能已经注意到了,该self参数命名me__init__方法myselfprint_foo方法和iset_foo方法。

在某种情况下,给self参数命名不是self有用的吗?如果不是,为什么Python允许这样做,因为它无疑是编写难以阅读和维护的代码的方式,也是造成混乱的原因?


问题答案:

PEP 8非常清楚地解决了这一问题:

始终使用self实例方法的第一个参数。

始终使用cls类方法的第一个参数。

虽然请记住,这
不是
python 样式指南,
并未强制执行

但是,要知道何时会出现不一致的情况-有时,样式指南建议并不适用。如有疑问,请运用最佳判断。查看其他示例并确定最合适的方法。

有时,如中的fractions.py,您可能会更清楚地使用a,b而不是self,other因为<your specific reasons>

样式指南实际上在上面的引号下方列出了一些您可能违反常规约定的原因:

其他一些忽略特定准则的充分理由:

  1. 应用指南时,即使对于那些习惯阅读遵循此PEP的代码的人来说,也会使代码的可读性降低。
  2. 为了与周围的代码一致(也可能是出于历史原因),这也会破坏它(尽管这也是清理别人的混乱的机会(以真正的XP风格))。
  3. 由于所讨论的代码早于准则的引入,因此没有其他理由修改该代码。
  4. 当代码需要与不支持样式指南建议的功能的Python的较旧版本兼容时。



 类似资料:
  • 如果你需要在命令行下插入一个值,通常需要使用引号将其括起来,尤其是当其包含空格时更是如此。 shellquote 函数可以携带任意数量的参数(包括数组), 它会使用引号将每个参数都括起来并返回一个可以传递到 Shell 命令行上的以空格间隔的字符串。 在下面的例子中,我们想要创建一个用于文件改名的 exec 资源, 然而源文件名和目标文件名都包含空格,因此在命令行上需要正确地使用引号将它们括起来。

  • 晚上好。 我对Swift中的转义(异步)闭包持怀疑态度,我想知道解决它的最佳方法是什么。 有一个示例函数。 正如您可能已经注意到的,这将导致内存泄漏,因为on成功是一个转义闭包,它保持自我。 现在,解决的办法就是在闭包里加入【弱自我】。我希望另一个函数只有在self不为0时才会被调用,所以应该是这样的: 但是参数是个问题,因为我不能传递nil参数,所以我必须打开自己才能使用该参数。 使用强制展开(

  • 要启动Java程序,我可以传递如下参数: 在gradle命令行中有哪些好的方法可以做到这一点: 这是正在建造的。格雷德尔:

  • public static void main(String[]args){ 公共类CustomConfiguration{ public static void readConfig(String filename){//从config.properties文件读取 } 我的问题是如何将“a”传递给CustomConfiguration类?

  • 问题内容: 我已经编写了一些函数(Swift 2.1,XCode 7.1.1): 并致电给他们: 如您所见,当类型是唯一参数时,它可以省略“ .self”。但是对于所有不仅具有类型参数的函数,它们都需要“ .self”。 我想知道: 这是为什么? 以及如何在使用它的地方声明一个不需要“ .self”的具有多个参数的函数? 问题答案: 巧合的是,这只是迅速发展而已。在Type是唯一的参数时,该功能被

  • 问题内容: 是否可以通过命令行将参数传递给MySQL脚本? 在此示例中,类似于@start_date的内容: 问题答案: 发现在网络上的答案在这里。 基本上,假设我们要运行以下查询: 我们可以这样传递“ start_date”和“ end_date”:

  • 如何将字符串的命令行参数传递给java main方法,以便调用另一个类中的特定方法? 我需要能够通过“java Statdriver mean”调用mean方法,或者“java Statdriver std”调用标准偏差方法,或者不传递任何参数将导致通过终端调用mean方法。 按我的方式做似乎不起作用。我认为我的问题在于如果,否则如果,否则循环。 这是我的密码:

  • 本文向大家介绍Lua 命名参数,包括了Lua 命名参数的使用技巧和注意事项,需要的朋友参考一下 示例