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 正则表达式
May 19 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
基于python实现模拟数据结构模型
Jun 12 Python
python实现银行账户系统
Feb 22 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+ACCESS 文章管理程序代码
2010/06/21 PHP
将php数组输出html表格的方法
2014/02/24 PHP
PHP中的表达式简述
2016/05/29 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
js中parseInt函数浅谈
2013/07/31 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
详解JavaScript的变量
2019/04/04 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
Python使用chardet判断字符编码
2015/05/09 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python实现图书借阅系统
2019/02/20 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
质检部职责
2013/12/28 职场文书
学习心得体会
2014/01/01 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
员工培训邀请函
2014/02/02 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
优秀团支部申报材料
2014/12/26 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
numpy数据类型dtype转换实现
2021/04/24 Python
Redis 哨兵机制及配置实现
2022/03/25 Redis
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技