1-python-类方法概述

方法分类

  • 公有方法
  • 私有方法
  • 静态方法
  • 类方法

私有方法和公有方法统称实例方法

什么是实例方法?

所谓实例方法有以下特点

  • 1、实例方法可以访问属于类和对象的成员
  • 2、必须至少有一个名为self的参数
  • 3、self参数是方法的第一个形参,self代表对象本身
  • 4、在类的实例方法中访问实例属性时需要以self为前缀,
  • 5、但在外部通过对象名调用对象方法时并不需要传递这个参数
  • 6、如果在外部通过类名调用属于对象的公有方法,需要显式为该方法的self参数传递一个对象名,用来明确指定访问那个对象的数据成员。

class Car(object):
    """定义一个实例方法"""
    def __init__(self,n):       # 构造函数
        self.name = n

    def printd(self):           # 定义一个实例方法
        print(self.name)

car1 = Car('AUDI')
car2 = Car('benz')
car3 = Car('HONDA')
car4 = Car('CIVIC')
car5 = Car('TOYOTA')
car6 = Car('PRADO')
car7 = Car('COROLLA')

car1.printd()
car2.printd()
car3.printd()
car4.printd()
car5.printd()

输出结果

AUDI
benz
HONDA
CIVIC
TOYOTA

什么是类方法?

  • 采用装饰器 @classmethod 来定义
  • 需要定义一个类变量来存放实例的个数

看下例子


class Car(object):
    """统计类Car实例的个数"""
    name_number = 0

    def __init__(self):
        Car.name_number = Car.name_number + 1

    @classmethod
    def get_number(cls):
        return cls.name_number
car1 = Car()
car2 = Car()
car3 = Car()

print(car1.get_number())
print(car2.get_number())
print(car3.get_number())

运行结果

3
3
3

什么是静态方法?

  • 静态方法不需要引用类或者实例
  • 比如,设置环境变量,修改另一个类的变量
  • 使用 @staticmethod 来实现

# 定义一个全局变量
IND = 'ON'


class Car(object):
    """关于车的类"""
    def __init__(self,n):               # 定义一个构造函数
        self.name = n

    @staticmethod                       # 定义一个静态方法
    def checkind():                     # 检测全局变量的值是否与检查的值一致,一致则往下走
        return IND == 'ON'

    def do_reset(self):                 # 定义一个实例方法
        if self.checkind():
            print('Reset done for:{}'.format(self.name))

    def set_db(self):                   # 定义一个实例方法
        if self.checkind():
            print('DB connection made for:{}'.format(self.name))

car6 = Car('PRADO')
car7 = Car('COROLLA')

car6.do_reset()
car7.do_reset()
car6.set_db()
car7.set_db()



运行结果

Reset done for:PRADO
Reset done for:COROLLA
DB connection made for:PRADO
DB connection made for:COROLLA

不一致则停止不往下走


# 定义一个全局变量
IND = 'OFF'


class Car(object):
    """关于车的类"""
    def __init__(self,n):               # 定义一个构造函数
        self.name = n

    @staticmethod                       # 定义一个静态方法
    def checkind():                     # 检测全局变量的值是否与检查的值一致,一致则往下走
        return IND == 'ON'

    def do_reset(self):                 # 定义一个实例方法
        if self.checkind():
            print('Reset done for:{}'.format(self.name))

    def set_db(self):                   # 定义一个实例方法
        if self.checkind():
            print('DB connection made for:{}'.format(self.name))

car6 = Car('PRADO')
car7 = Car('COROLLA')

car6.do_reset()
car7.do_reset()
car6.set_db()
car7.set_db()

没有任何输出

实例方法,类方法和静态方法区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值