对类和函数的复习

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
类是描述具有相同的属性和方法的对象的集合。它定义了该集合中的每个对象所共有的属性和方法。对象是类的实例。

一、主体不同

简化的来说:
类:是面向对象程序设计实现信息封装的基础。
函数:是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、
(OOP中)方法。

二、特点不同

1、类:是一种用户定义的引用数据类型,也称为类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实列称之为对象
2、函数:分为全局函数、全局静态函数;在类中还可以定义构造函数(初始化对象)、析构函数(释放内存,一般是__del__)、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等。
构造函数 :是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
析构函数:析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。

三、规则不同

1、类:实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型,不同的是它是一种复杂的数据类型。
2、函数:函数必须声明后才可以被调用。调用格式为:函数名(实参)调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。

其实从某种意义上来说,类并不比函数更好。只是在某些情况下使用类能够更好的帮助我们写代码。所以如果发现自己使用各种数据集调用some_function(data),那么将其用类表示为data.some_function()可能提高我们的效率。至于到底在何时使用类,我们来看看其他程序员的理解

当我们拥有一堆共享状态的函数,或者将相同的参数传递给每个函数时,我们可以重新考虑代码使用类。
类的“可重用性”意味着我们可以在其他应用程序中重用之前的代码。如果我们在自己的文件中编写了类,则只需将其放在另一个项目中即可使其工作。
函数对于小型项目非常有用,但是一旦项目开始变大,仅使用函数就可能变得混乱。类是组织和简化代码的一种非常好的方法。
通常,如果在函数内部找到自写函数,则应考虑编写类。如果我们在一个类中只有一个函数,那么请坚持只写一个函数。
如果需要在函数调用之间保留一些状态,那么最好使用带有该函数的类作为方法。
不过,说到异同,python相对于其他语言,确实有一点不一样的地方,那就是python的类可以实现__call__方法。实现以后,类调用产生对象,对象调用,就像普通的函数调用。
__call__方法
关于 call 方法,不得不先提到一个概念,就是可调用对象(callable),我们平时自定义的函数、内置函数和类都属于可调用对象,但凡是可以把一对括号()应用到某个对象身上都可称之为可调用对象,判断对象是否为可调用对象可以用函数 callable

如果在类中实现了 call 方法,那么实例对象也将成为一个可调用对象,

你也许已经知道,在Python中,方法也是一种高等的对象。这意味着他们也可以被传递到方法中就像其他对象一样。这是一个非常惊人的特性。 在Python中,一个特殊的魔术方法可以让类的实例的行为表现的像函数一样,你可以调用他们,将一个函数当做一个参数传到另外一个函数中等等。这是一个非常强大的特性让Python编程更加舒适甜美。 call(self, [args…])

允许一个类的实例像函数一样被调用。实质上说,这意味着 x() 与 x.call() 是相同的。注意 call 参数可变。这意味着你可以定义 call 为其他你想要的函数,无论有多少个参数。

仅供自己复习参考用
以上参考百度百科,简述,知乎。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值