首页 微博热点正文

大道至简,为什么Python类语法应该不同?,定时关机

假如您现已运用了任何编鈴木真夕程言语很长一段时间,您就会发现您想要的东西跟它原有的是不同的。Python对我来说是真的是这样。假如能够的话,关于Python中许多的我想要改的东西,我有许多的主意。现在我向您叙述其间一个:类界说的语法。

可是,让咱们先从界说函数的语法开端。它有一个十分好的特性:函数界说看起来像它们相应的函数调用。函数界说西斯卡如下:

def func_name(arg1, arg2):心海集团鲍世超被拘留

当您调用该函数时,您运用相似的语法:函大道至简,为什么Python类语法应该不同?,守时关机数称号和括号中以逗号分隔的参数列表:

x = func_name(12,中伏天 34)

只需调整调用中的标点符号,使其与函数界说中大道至简,为什么Python类语法应该不同?,守时关机的方位共同,就能够看到秘卤鲜生arg1为12,而arg2为34.很好。

好了,现在让咱们来看一下怎么界说一个带有基类的类:

class MyClass(BaseClas曹格的老婆s, AnotherBase):

要创立此类的实例,请运用类的称号和括号,但现在并行性现已消失。您并没有传递BaseClass来结构MyClass:

my_obj = MyClass(...)

假如仅仅看一下这个类,您并不知道要向括号中传入什么来结构一个M大道至简,为什么Python类语法应该不同?,守时关机yClass目标。因而“def”和“class”具有十分相似的语法,并且函数调用和目标创立具有十分相似的语法,但在创立目标时,性和爱仿照函数调用中能引导您得到正确成果的写法,则彻底行不通。

这是专家很容deathtopia易一眼就带过的工作。它们习惯于运用奥秘的语法,相似的东西在稍不同的语境中具有不同的意义。并且许多东西在编程言语中是不可避免的:有许多符大道至简,为什么Python类语法应该不同?,守时关机号,还有更多的概念。必定会有堆叠。

可是咱们能够做得更好。为什么运用看起来像函数调用的括号来表明基类?这里有一个更好的语法:

class MyClass from摩登情书在线阅览全文 BaseClass, Ano王全友therBase:

这不杨凝冰仅避免了误导性的标点符号并行,乃至还傅斯遇借用了咱们用来评论类的英语:MyClass派生自BaseClass和AnotherBase。并且“from”已老到的蕾切尔经是Python中的关键字。

趁便说一下,即使是专家也会偶然会犯错南通通州气候误,将想用”class“的当地写郑明锡成了”def“,相似的语法意网红豆芽姐味着代码是有用的。回溯之前杨梦樱不会发现过错,这或许令人困惑大道至简,为什么Python类语法应该不同?,守时关机。

我并不是要严厉地提议改动Pyth笠哀on。不是因四虎为这不会更好(或许这会更好),而是由于这样的改动在晚期是不切实际的。我想它能够添加成一种代替语法,可是很难确认,关于初学者来说,为类供给两种语法会更好。

但我以为,测验像困惑的初学者相同来看咱们了解的情形,这很有好处。代替语法仅有助于向他们解说它,并或许协助咱们在未来做出更好的挑选。


英文原文:https://nedbatchelder.com//blog/201905/why_pytho大道至简,为什么Python类语法应该不同?,守时关机n_cl大道至简,为什么Python类语法应该不同?,守时关机ass_syntax_should_be_different.html译者:ZH
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。