做过python的人你会发现想要的东西跟它原有的是不同的。Python对我来说是真的是这样。如果可以的话,对于Python中很多的我想要改的东西,我有很多的想法。现在我向您讲述其中一个:类定义的语法。

但是,让我们先从定义函数的语法开始。它有一个非常好的特性:函数定义看起来像它们相应的函数调用。函数定义如下:

def func_name(arg1, arg2):

当您调用该函数时,您使用类似的语法:函数名称和括号中以逗号分隔的参数列表:

x = func_name(12, 34)

只需调整调用中的标点符号,使其与函数定义中的位置一致,就可以看到arg1为12,而arg2为34.很好。另外核心关键:python实战是检验学习效果的唯一标准,所以不要偷懒,如果你缺乏最新python实战教程,可以去小编的python技术扣裙 :易久武起而而流易思 翻译成数字就可以找到了,自己去下

接下来:让我们来看一下如何定义一个带有基类的类:

class MyClass(BaseClass, AnotherBase):

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

my_obj = MyClass(…)

如果只是看一下这个类,您并不知道要向括号中传入什么来构造一个MyClass对象。因此“def”和“class”具有非常相似的语法,而且函数调用和对象创建具有非常相似的语法,但在创建对象时,模仿函数调用中能引导您得到正确结果的写法,则完全行不通。

这是专家很容易一眼就带过的事情。它们习惯于使用神秘的语法,类似的东西在稍不同的语境中具有不同的含义。而且很多东西在编程语言中是不可避免的:有很多符号,还有更多的概念。必然会有重叠。

但是我们可以做得更好。为什么使用看起来像函数调用的括号来表示基类?这里有一个更好的语法:

class MyClass from BaseClass, AnotherBase:

这不仅避免了误导性的标点符号并行,甚至还借用了我们用来讨论类的英语:MyClass派生自BaseClass和AnotherBase。而且“from”已经是Python中的关键字。

顺便说一下,即使是专家也会偶尔会犯错误,将想用”class“的地方写成了”def“,类似的语法意味着代码是有效的。回溯之前不会发现错误,这可能令人困惑。

我并不是要严肃地提议改变Python。不是因为这不会更好(或者这会更好),而是因为这样的改变在晚期是不切实际的。我想它可以添加成一种替代语法,但是很难确定,对于初学者来说,为类提供两种语法会更好。你们是怎么认为的呢?

为什么Python类语法应该不同?的更多相关文章

  1. python类的静态方法和类方法区别

    先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...

  2. Python 基础语法学习(第一讲)---类的使用

    [写在前面]:其实自学python有一段时间了,但是一直没想起来要写博客来记录自己的学习,今天才感觉要写点什么让自己学的更扎实一点,所以从今天开始更新python自学系列,希望看见文章的大佬们可以指点 ...

  3. 第8.1节 Python类的构造方法__init__深入剖析:语法释义

    一.    引言 凡是面向对象设计的语言,在类实例化时都有构造方法,很多语言的构造方法名与类名一致,Python中类的构造方法比较特殊,必须是__init__特殊方法. 二.    语法释义 1.   ...

  4. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  5. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  6. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  7. Python类的特点 (1):构造函数与方法

    Python中,类的特点: #encoding:utf-8 class Parent(object): x=1 #x是Parent类的属性(字段) def __init__(self): print ...

  8. Python 基础语法(三)

    Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...

  9. python类及其方法

    python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...

随机推荐

  1. Oracle报错注入总结

    0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句], ...

  2. linux下python相关命令

    若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) python3 ...

  3. 在Python中,输出格式:%d , %6d , %-6d, %06d , %.6f的一些区分

    和C/C++编程语言一样 %d 普通的整数输出 i = 1 sum = 0 while i <= 100: sum += i i += 1 print("1到100的和为:%d&quo ...

  4. OpenvSwitch系列之ovs-ofctl命令使用

    Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl 命令使用 OpenvSwit ...

  5. 微信小程序开发注意事项(优化项)

    最近公司有一个小程序开发项目,自己也自学了不少,有一些开发小心得,记录在这里. 小程序开发中注意: 1,setData 小程序视图层和逻辑层在两个独立的模块,并不具备数据直接传递的,setData相当 ...

  6. 我遇到的一些Git问题汇编

    问题一: failed to push some refs to git hint: Updates were rejected because the remote contains work th ...

  7. idea的tomcat实现热部署遇到的问题

    选择Deployment的时候,要选择exploded结尾的,否则不支持热部署

  8. Solr分片机制以及Solrcloud搭建及分片操作

    Solr分片描述 分片是集合的逻辑分区,包含集合中文档的子集,这样集合中的每个文档都正好包含在一个分片中.集合中包含每个文档的分片取决于集合的整体"分片"策略. 当您的集合对于一个 ...

  9. Java基础(二十四)Java IO(1)输入/输出流

    在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称为输出流. 输入流的指向称为源,程序从指向源的输入流中读取数据. 输出流的指向是字节要去的目的地, ...

  10. 如何判断float值有效

    // 一个浮点数是否有效,首先要看其是否是一个数字(_isnan为0),其次还要看其是否超出了表示范围(_finite为0) // 注意_finite是有限的意思 #include <float ...