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 相关文章推荐
python re正则表达式模块(Regular Expression)
Jul 16 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
Python 的描述符 descriptor详解
Feb 27 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
书单|人生苦短,你还不用python!
Dec 29 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
Selenium定时刷新网页的实现代码
Oct 31 Python
基于Python函数和变量名解析
Jul 19 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
jupyter notebook指定启动目录的方法
Mar 02 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随机输出名人名言的代码
2012/10/07 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
jquery动态添加option示例
2013/12/30 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
实例分析编写vue组件方法
2019/02/12 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python表示矩阵的方法分析
2017/05/26 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
Python如何实现动态数组
2019/11/02 Python
Python程序慢的重要原因
2020/09/04 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
高一新生军训方案
2014/05/12 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
消防安全月活动总结
2015/05/08 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
django上传文件的三种方式
2021/04/29 Python
pytorch实现手写数字图片识别
2021/05/20 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python