Python中的类属性类方法、静态方法

一、类的结构

1.使用面向对象开发,第一步是设计类

2.使用 类名() 创建对象,创建的动作有两步

  1. 在内存中为对象分配空间
  2. 调用初始化方法__init__为对象初始化

3.对象创建后,内存中就有一个对象的实实在在的存在

因此:

  1. 创建出来的对象叫做类的实例
  2. 创建对象的动作叫做实例化
  3. 对象的属性叫做实例属性
  4. 对象调用的方法叫做实例方法

在程序执行时:

  1. 对象各自拥有自己的实例属性
  2. 调用对象的方法,可以通过self,访问自己的属性,调用自己的方法

由此得出结论:

  • 每个对象都有自己独立的内存空间,保存各自不同的属性
  • 多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部

二、类属性和类方法

1、类属性

在Python中一切皆对象,类也是一个对象--->类对象,在程序运行中,类对象在内存中只有一份,通过它可以创建出很多个对象实例,除了封装实例和属性的方法外,类对象还可以拥有自己的属性和方法:类属性和类方法

通过  类名.  的方式可以直接访问类的属性

类属性其实就是 给类对象定义类的属性,通常用来记录与这个类相关的特征

class Tool(object):
    #1.使用赋值语句定义类属性,记录所有工具的数量
    count = 0
    def __init__(self,name):
        self.name = name
        #让类属性的值+1
        Tool.count+=1
#创建工具对象(对象在创建的时候,会自动调用初始化方法)
tool1 = Tool('斧头')
tool2 = Tool('榔头')
#输出工具对象的总数
#使用类名.属性名 来获取
print Tool.count

2、类方法

类属性就是针对类对象定义的,使用赋值语句在class关键字下可以定义属性,类属性用于记录于这个类相关的特性

类方法就是针对类对象定义的方法,在类方法内部就可以直接访问类属性或调用其他类方法

class Toy(object):
    # 使用赋值语句定义类属性,记录所有玩具的数量
    count = 0

    @classmethod
    def show_toy_count(cls):
        # cls.count 在类方法内部,访问当前的类属性
        print '玩具对象的数量 %d' % cls.count

    def __init__(self, name):
        self.name = name
        # 让类属性+1
        Toy.count += 1

#创建玩具对象
toy1 = Toy('乐高')
toy2 = Toy('玩具熊')

#调用类方法
Toy.show_toy_count()

 三、静态方法

在开发中,如果需要在类中封装一个方法,这个方法既不需要访问实例属性或者调用实例方法,也不需要访问类属性或者调用类方法,这个时候,我们就可以把这个方法封装成一个静态方法

class Cat(object):
    # 不访问实例属性/类属性
    @staticmethod
    def call():
        print '喵喵~'
# 通过 类名. 调用静态方法
Cat.call()
# 不需要创建对象,直接就可以使用

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值