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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Python datetime时间格式化去掉前导0
Jul 31 Python
python 重定向获取真实url的方法
May 11 Python
Python面向对象类继承和组合实例分析
May 28 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
在python中使用with打开多个文件的方法
Jan 07 Python
对Python3使运行暂停的方法详解
Feb 18 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Django实现简单的分页功能
2021/02/22 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
物流管理专业职业生涯规划书
2014/01/06 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
二年级小学生评语
2014/04/21 职场文书
党员政治学习材料
2014/05/14 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
python 中[0]*2与0*2的区别说明
2021/05/10 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL