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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python函数的周期性执行实现方法
Aug 13 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
深入理解Django的中间件middleware
Mar 14 Python
详解flask入门模板引擎
Jul 18 Python
TensorFlow Session会话控制&amp;Variable变量详解
Jul 30 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
python画图把时间作为横坐标的方法
Jul 07 Python
python3 enum模块的应用实例详解
Aug 12 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
golang中的空接口使用详解
Mar 30 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获取数组长度的方法(有实例)
2013/10/27 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
javascript 内存回收机制理解
2011/01/17 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Python闭包实现计数器的方法
2015/05/05 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
大学军训感言200字
2014/02/26 职场文书
个人典型事迹材料
2014/12/30 职场文书
违纪开除通知书
2015/04/25 职场文书
劳动仲裁调解书
2015/05/20 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers