博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数
阅读量:4553 次
发布时间:2019-06-08

本文共 1954 字,大约阅读时间需要 6 分钟。

定义: 静态函数(@staticmethod): 即静态方法,主要处理与这个类的逻辑关联, 如验证数据;

         类函数(@classmethod):即类方法, 更关注于从类中调用方法, 而不是在实例中调用方法, 如构造重载;

         成员函数: 实例的方法, 只能通过实例进行调用;

 

1 # -*- coding: utf-8 -*-   2    3 #eclipse pydev, python 3.3   4 #by C.L.Wang   5    6 class A(object):   7        8     _g = 1   9       10     def foo(self,x):  11         print('executing foo(%s,%s)'%(self,x))  12  13     @classmethod  14     def class_foo(cls,x):  15         print('executing class_foo(%s,%s)'%(cls,x))  16  17     @staticmethod  18     def static_foo(x):  19         print('executing static_foo(%s)'%x)     20   21 a = A()  22 a.foo(1)  23 a.class_foo(1)  24 A.class_foo(1)  25 a.static_foo(1)  26 A.static_foo('hi')  27 print(a.foo)  28 print(a.class_foo)  29 print(a.static_foo)

 

 

 

具体应用: 比如日期的方法, 可以通过实例化(__init__)进行数据输出; 可以通过类方法(@classmethod)进行数据转换; 可以通过静态方法(@staticmethod)进行数据验证;

1 # -*- coding: utf-8 -*-   2    3 #eclipse pydev, python 3.3   4 #by C.L.Wang   5    6 class Date(object):   7    8     day = 0   9     month = 0  10     year = 0  11   12     def __init__(self, day=0, month=0, year=0):  13         self.day = day  14         self.month = month  15         self.year = year  16           17     def display(self):  18         return "{0}*{1}*{2}".format(self.day, self.month, self.year)  19      20     @classmethod  21     def from_string(cls, date_as_string):  22         day, month, year = map(int, date_as_string.split('-'))  23         date1 = cls(day, month, year)  24         return date1  25      26     @staticmethod  27     def is_date_valid(date_as_string):  28         day, month, year = map(int, date_as_string.split('-'))  29         return day <= 31 and month <= 12 and year <= 3999  30       31 date1 = Date('12', '11', '2014')  32 date2 = Date.from_string('11-13-2014')  33 print(date1.display())  34 print(date2.display())  35 print(date2.is_date_valid('11-13-2014'))  36 print(Date.is_date_valid('11-13-2014'))

 

转载于:https://www.cnblogs.com/zhan-nlp/p/7920795.html

你可能感兴趣的文章
xe7 控件升级
查看>>
TFrame bug
查看>>
刚学习的如何才能自信的拍美美的婚纱照呢(要结婚啦)
查看>>
M51文件注释
查看>>
关于临界资源访问互斥量的死锁问题
查看>>
django-view层
查看>>
异步加载JS的方法。
查看>>
golang-gorm框架支持mysql json类型
查看>>
【tool】白盒测试
查看>>
图论其一:图的存储
查看>>
20180923-WebService
查看>>
z变换
查看>>
Python - 静态函数(staticmethod), 类函数(classmethod), 成员函数
查看>>
Spring基础2
查看>>
【灵异短篇】这个夜晚有点凉
查看>>
一点小问题
查看>>
pytest 10 skip跳过测试用例
查看>>
MVC身份验证及权限管理
查看>>
It was not possible to find any compatible framework version
查看>>
gulp与webpack的区别
查看>>