为什么Python类语法应该不同?
做过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类语法应该不同?的更多相关文章
- python类的静态方法和类方法区别
先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...
- Python 基础语法学习(第一讲)---类的使用
[写在前面]:其实自学python有一段时间了,但是一直没想起来要写博客来记录自己的学习,今天才感觉要写点什么让自己学的更扎实一点,所以从今天开始更新python自学系列,希望看见文章的大佬们可以指点 ...
- 第8.1节 Python类的构造方法__init__深入剖析:语法释义
一. 引言 凡是面向对象设计的语言,在类实例化时都有构造方法,很多语言的构造方法名与类名一致,Python中类的构造方法比较特殊,必须是__init__特殊方法. 二. 语法释义 1. ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python基本语法[二],python入门到精通[四]
在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...
- Python基本语法,python入门到精通[二]
在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...
- Python类的特点 (1):构造函数与方法
Python中,类的特点: #encoding:utf-8 class Parent(object): x=1 #x是Parent类的属性(字段) def __init__(self): print ...
- Python 基础语法(三)
Python 基础语法(三) --------------------------------------------接 Python 基础语法(二)------------------------- ...
- python类及其方法
python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...
随机推荐
- linux下python相关命令
若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) python3 ...
- spring cloud alibaba 简介
### Spring Cloud Alibaba [官方github地址](https://github.com/alibaba/spring-cloud-alibaba) Spring Cloud ...
- c无聊编程
#include<stdio.h> #include<math.h> void fun_1()//绘制余弦直线 { double y; int m, x; ; y >= ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- jquery a标签的锚点点击的时候页面上缓慢滚动
a标签增加一个名字触发效果: $(".transition").click(function(){ if (location.pathname.replace(/^\//, '') ...
- Leetcode Tags(8)Binary Search
一.475. Heaters 输入: [1,2,3],[2] 输出: 1 解释: 仅在位置2上有一个供暖器.如果我们将加热半径设为1,那么所有房屋就都能得到供暖. 输入: [1,2,3,4],[1,4 ...
- Process类调用exe,返回值以及参数空格问题
(方法一)返回值为int fileName为调用的exe路径,入口参数为para,其中多个参数用空格分开,当D:/DD.exe返回值为int类型时. Process p = new Process() ...
- java常用类 比较器/system/math/big
Java 比较器 自然排序:java.lang.Comparable 定制排序:java.util.Comparator 自然排序:java.lang.Comparable Comparable接口 ...
- 使用Bind提供域名解析服务(正向解析)
小知识: 一般来讲域名比IP地址更加的有含义.也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了. DNS域名 ...
- 投资自己【用Java写系统】
猿来如此:http://programmer.ischoolbar.com/