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 相关文章推荐
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
python处理html转义字符的方法详解
Jul 01 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
python实现超市扫码仪计费
May 30 Python
Python实现基于POS算法的区块链
Aug 07 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
python爬虫实现获取下一页代码
Mar 13 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
Python绘制分类图的方法
Apr 20 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
python基础教程之字典操作详解
2014/03/25 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python模拟用户登录验证
2017/09/11 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
keras打印loss对权重的导数方式
2020/06/10 Python
python如何删除文件、目录
2020/06/23 Python
python的flask框架难学吗
2020/07/31 Python
python操作链表的示例代码
2020/09/27 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
师范大学应届生求职信
2013/11/21 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
党员实事承诺书
2014/03/26 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
Go语言grpc和protobuf
2022/04/13 Golang