Python踩坑:类与类对象类型参数传递与使用

前言

对初学者来说,Python确实简单好用,毕竟动态类型语言,不用定义就可以拿来用,类型之间随意转换简直不要太方便,因此Python用来写写小脚本,爬虫程序什么的,没什么问题。

不过,一旦用来开发稍微大型一点的项目,例如搭建一个Web应用,就会遇到一些问题,一般缺乏经验的人都会陷入某些坑中。= =…

先说坑,函数参数类型是一坑,类与类的对象这又是一坑。

虽然之前用其他静态类型语言(例如C#/Java)的时候都搞明白了的,但是换了个动态类型的Python,总会有点令人疑惑。

例子

让我用代码来举例子。

首先定义两个类,都继承自内置的 类,说明这两个类是异常类。

然后再定义处理异常的方法:

接着是测试代码:

运行结果:

第一个的结果没毛病,可是第二个接抛出异常了,看看错误信息先:,没有提供参数,因为这个参数不是类的实例,所以自然没有参数。

到这里应该有点明白了,就是调用这个方法的时候,传入的参数其实是这个类型本身,并不是它的对象,有点神奇,居然把一个类型当成参数用了。

那要怎么解决呢,很简单,传入的对象就行了。

代码如下:

运行结果

没毛病了,上面代码还有个方法没有使用呢,来试试看。

运行结果

可以看出,使用的时候,如果是一个类型,就打印这个类型的信息,是类型的对象时,才会打印返回的结果。

搞明白了之后其实很简单,但是Python对函数参数没有限制,即使给方法加了,也只是起到了提示作用,不会做真正的限制或者是隐式转换,所以有时候代码写久了头晕脑胀,就容易掉进动态类型坑里了 T_T…

国际惯例,放图片:

About

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G0VI2E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券