Python 实例方法、类方法和静态方法

python基础 专栏收录该内容
10 篇文章 0 订阅

部分内容参考Python 实例方法、类方法和静态方法,并做了一些改动

类通过关键字 class 引导,后跟类的名称,通常第一个字母大写,类名称MyClass后的括号内的object表示该类的父类,如果定义的类没有写明从哪个类继承来的,就在括号内使用object,object类是所有类的父类。

1. 实例方法:

实例方法通过实例来调用,第一个参数为self。当使用实例ik1,调用实例方法时,实例ik1会传递给self参数。

class Kls(object):
    def __init__(self, data):
        self.data = data

    def printd(self):
        print(self.data)


ik1 = Kls('leo')
ik2 = Kls('lee')

ik1.printd()
ik2.printd()

输出:

leo 
lee

 

2. 类方法:

类方法通过实例或者类来调用,类方法第一个参数为cls。当使用实例或者类,调用类方法时,将类传给cls参数。采用装饰器@classmethod来定义

class Kls(object):
    num_inst = 0

    def __init__(self):
        Kls.num_inst = Kls.num_inst + 1

    @classmethod
    def get_no_of_instance(cls):
        return cls.num_inst


# 通过实例调用类方法
ik1 = Kls()
print ik1.get_no_of_instance()

# 通过类调用类方法
ik2 = Kls()
print Kls.get_no_of_instance()

输出:

1

2

 

3. 静态方法:

静态方法没有self或者cls参数,实现时并不需要引用类或者实例,例如,设置环境变量。因此,既可以使用类也可以使用实例来调用静态方法。使用装饰器@staticmethod来定义

IND = 'ON'


class Kls(object):
    def __init__(self, data):
        self.data = data

    @staticmethod
    def checkind():
        return IND == 'ON'

    def do_reset(self):
        if self.checkind():
            print('Reset done for: %s' % self.data)

    def set_db(self):
        if self.checkind():
            print('DB connection made for: %s' % self.data)


ik1 = Kls(24)

# 调用了一个实例方法,然后又通过该实例调用静态方法
ik1.do_reset()

# 调用了一个实例方法,然后又通过该实例调用静态方法
ik1.set_db()

# 通过类直接调用静态方法
Kls.checkind()

输出:

Reset done for: 24 
DB connection made for: 24 

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值