当前位置:首页 » 编程语言 » python的类方法

python的类方法

发布时间: 2024-12-26 12:31:12

python中的面向对象(进阶)

一、实例方法,类方法,静态方法

我们首先写一个类,里面包含这三种方法。

可以看到,我们用到了两个装饰器。

我们用类和实例分别调用下类方法

我们用类和实例分别调用下静态方法

静态方法其实就是把一个普通的函数写在类里,与直接在外层写一个函数是一样的,本质上是一个函数。

为了方便理解,我们分别打印下这些方法的类型

通过type()查看对象是方法还是函数

此外,还可以通过inspect模块判断某个对象是否是某种类型,返回布尔值。

用法


小Tips:概念理解

直接def定义的,我们叫做函数

把函数放到类里,我们叫做方法

方法可以通过装饰器staticmethod转为(放在方法里的)函数

继承

一个类继承另一个类时,会自动获得另一个类的所有属性和方法,被继承的类称之为父类,新类称为子类。子类拥有父类所有的属性和方法,并且可以定义自己的属性和方法

我们以上边的Rectangle类为父类来试一下


1)完全继承

可以看到,子类完全继承父类后,可以直接调用父类的所有方法。

2)部分继承

部分继承:继承父类后,修改父类的同名方法

我们试一下,Square继承Rectangle后,修改__init__()方法

3)拓展父类的方法

在保留父类中某个方法的代码同时,对方法进行拓展

可以在方法中加入"super().方法名"来实现


4)@property

⑵ python 如何调用类的方法

以numpy为例,首先创建一个对象:

In[32]:a=numpp.arange(10)

然后,a就拥有了类的方法,例如求和:

In[33]:a.sum()
Out[33]:45

也可以使用类的方法,将其应用到类的对象上,例如:

In[34]:numpp.sum(a)
Out[34]:45

⑶ python类方法和静态方法有什么用

Python中至少有三种比较常见的方法类型,即实例方法,类方法、静态方法。它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文。
首先,这三种方法都定义在类中。下面我先简单说一下怎么定义和调用的。(PS:实例对象的权限最大。)
实例方法
定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
调用:只能由实例对象调用。
类方法
定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
调用:实例对象和类对象都可以调用。
静态方法
定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
调用:实例对象和类对象都可以调用。
实例方法
简而言之,实例方法就是类的实例能够使用的方法。这里不做过多解释。
类方法
使用装饰器@classmethod。
原则上,类方法是将类本身作为对象进行操作的方法。假设有个方法,且这个方法在逻辑上采用类本身作为对象来调用更合理,那么这个方法就可以定义为类方法。另外,如果需要继承,也可以定义为类方法。
如下场景:
假设我有一个学生类和一个班级类,想要实现的功能为:
执行班级人数增加的操作、获得班级的总人数;
学生类继承自班级类,每实例化一个学生,班级人数都能增加;
最后,我想定义一些学生,获得班级中的总人数。
思考:这个问题用类方法做比较合适,为什么?因为我实例化的是学生,但是如果我从学生这一个实例中获得班级总人数,在逻辑上显然是不合理的。同时,如果想要获得班级总人数,如果生成一个班级的实例也是没有必要的。

热点内容
phppostget区别 发布:2024-12-27 00:34:03 浏览:283
ios缓存策略 发布:2024-12-27 00:16:29 浏览:506
cmd怎么打开python 发布:2024-12-27 00:01:15 浏览:965
兼修脚本作画 发布:2024-12-26 23:55:32 浏览:219
存储卡和sd卡一样吗 发布:2024-12-26 23:50:43 浏览:446
多空线源码 发布:2024-12-26 23:48:45 浏览:323
steam有哪些免费且配置低的游戏 发布:2024-12-26 23:45:36 浏览:338
怎么配一台服务器的游戏电脑 发布:2024-12-26 23:45:35 浏览:7
无丁之地下载ftp 发布:2024-12-26 23:36:32 浏览:293
em聚类算法 发布:2024-12-26 23:22:28 浏览:670