python中的3种定义类方法


Posted in Python onNovember 27, 2021

python中的3种定义类方法:

  • 普通方法
  • 类方法(@classmethod)
  • 类方法(@classmethod)

1、普通方法

创建普通的方法的方式有两种(class A() & class B()).

class A():

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def get_name(self):

        print('my name is', self.name)

    def get_age(self):

        print(f'i am {self.age} years old')

class B():

    def get_name(self, name):

        print('my name is', name)

    def get_age(self, age):

        print(f'i am {age} years old')

if __name__ == '__main__':

    a = A('tom',19)

    a.get_name()  # my name is tom

    a.get_age() # i am 19 years old

    b = B()

    b.get_name('tom')  # my name is tom

    b.get_age(19) # i am 19 years old

class A() 中, __init__()是一个特殊的方法,相当于对A进行初始化,__init__ 中的self是对象A本身,nameage是它们的形参。

  每次调用方法之前需要对类进行实例化

2、类方法

@classmethod不需要self来表示自身了,而是用了cls来代替。

此时不用再进行实例化了。直接 类名.函数名 进行调用。

#Python学习交流群:725638078

class C():

    @classmethod

    def get_name(cls, name):

        print(cls)  # <class '__main__.C'>

        print('my name is %s' % name)

    @classmethod

    def get_age(cls, age):

        print(f'i am %s years old' % age)

if __name__ == '__main__':

    C.get_name('tom')  # my name is tom

    C.get_age(19) # i am 19 years old

3、静态方法

@staticmethod也是通过 类名.函数名 的方式进行调用

静态方法不需要表示自身对象的self或者cls作为参数,跟直接使用函数是一样的。

class D():

    @staticmethod

    def get_name(name):

        print('my name is %s' % name)

    @staticmethod

    def get_age(age):

        print(f'i am %s years old' % age)

 

if __name__ == '__main__':

    D.get_name('tom')  # my name is tom

    D.get_age(19) # i am 19 years old

4、总结

@staticmethod @classmethodPython中称为 装饰器,

用来修饰函数,相当于添加一个额外的功能,比如不再像普通函数那样进行实例化。

通过使用装饰器可以让代码更加整洁,易读。用了修饰器之后,也可以进行实例化之后再调用,但是就显得多此一举了。

到此这篇关于 python中的3种定义类方法的文章就介绍到这了,更多相关 python 定义类方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
Python命令启动Web服务器实例详解
Feb 23 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
python实现梯度下降算法的实例详解
Aug 17 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
Python类class参数self原理解析
Nov 19 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
详解Flask开发技巧之异常处理
Jun 15 Python
Python使用华为API为图像设置多个锚点标签
Apr 12 Python
5道关于python基础 while循环练习题
Nov 27 #Python
Python中的pprint模块
Nov 27 #Python
python 多态 协议 鸭子类型详解
Nov 27 #Python
Python机器学习实战之k-近邻算法的实现
Python Django项目和应用的创建详解
python playwright 自动等待和断言详解
Nov 27 #Python
Python实现制作销售数据可视化看板详解
You might like
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP多进程编程实例详解
2017/07/19 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
Python类的继承和多态代码详解
2017/12/27 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
详解Python time库的使用
2019/10/10 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
自荐书模板
2013/12/19 职场文书
物流司机岗位职责
2013/12/28 职场文书
机电一体化职业规划书
2014/01/07 职场文书
年度考核自我评价
2014/01/25 职场文书
Python os和os.path模块详情
2022/04/02 Python