码迷,mamicode.com
首页 > 编程语言 > 详细

python staticmethod and classmethod方法

时间:2015-10-21 22:30:43      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用。没有隐性参数。

实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

技术分享

技术分享
#https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods
class Date:
    def __init__(self,month,day,year):
        self.month = month
        self.day = day
        self.year = year
    def display(self):
        return "parent class {0}-{1}-{2}".format(self.month,self.day,self.year)
    @staticmethod
    def smil(month,day):
        return Date(month,day,2015)

    @classmethod
    def cmil(self,month,day):
        return self(month,day,2015)

class DateSub(Date):
    def display(self):
        return "subclass {0}-{1}-{2}".format(self.month,self.day,self.year)

new_year = Date(1,1,2016)
mi_new_year = Date.smil(1,2)

print(new_year.display())
print(mi_new_year.display())

print(isinstance(new_year,Date))
print(isinstance(mi_new_year,Date))

print("-"*40)
dateSub1=DateSub(10,19,2017)
dateSub2 =DateSub.smil(10,10)
dateSub3 =DateSub.cmil(10,11)
print(dateSub1.display())
print(dateSub2.display())
print(dateSub3.display())

print("isinstance(dateSub1,DateSub) = %s " % isinstance(dateSub1,DateSub))
print("isinstance(dateSub2,DateSub) = %s " % isinstance(dateSub2,DateSub)) #subclass create plain Date object
print("isinstance(dateSub2,Date) = %s " % isinstance(dateSub2,Date))
print("isinstance(dateSub3,DateSub) = %s " % isinstance(dateSub3,DateSub))

print("-"*40)
print Date.display
print Date.smil
print Date.cmil
print Date.cmil(1,1)
View Code

技术分享

python staticmethod and classmethod方法

标签:

原文地址:http://www.cnblogs.com/lxk613/p/4899160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!