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

在这里插入图片描述

1、Python中的类属性

(1)类属性描述

在面向对象中,属性一般可以分为两种形式:① 对象属性(成员属性) ② 类属性
在Python代码中,一切皆对象。类也是一种特殊的对象,所以我们也可以为类来创建一个属性 => 类属性
注意:
既然类也可以拥有属性,类属性与对象属性有何区别呢?
对象属性(成员属性)是由这个类产生的对象所拥有的属性。
类属性:并不是由实例化对象拥有的,而是这个类所拥有的属性,可以理解为是所有对象共同拥有的属性,但是其不属于某一个对象。

(2)语法

定义类属性:
class 类名称():
属性 = 属性值
访问类属性:
既可以在类的里面也可以在类的外面
类名.类属性(推荐)
对象.类属性(也可以,但是不推荐)

(3)案例

应用场景:比如我们想知道由这个类到底生成了多少个对象,如何定义一个属性来进行统计呢?
强调一下:类属性并不是某个对象所拥有的,而是所有对象所共同组成的一个特征,我们就可以把其定义为类属性

class Person(object):
    # 定义一个类属性:用于统计到底由这个类产生了多少个对象
    count = 0
    # 通过__init__魔术方法定义的都是对象属性
    def __init__(self, name, age):
        self.name = name
        self.age = age
        # 对类属性进行累加计数
        Person.count += 1

p1 = Person("小张", 22)
p2 = Person("小王", 22)

print(f'由Person类一共创建了{Person.count}个对象。')

结果:
在这里插入图片描述

2、Python中的类方法

(1)类方法描述

在Python代码中,类属性与对象属性一样,都强调封装性,不建议直接在类的外部直接对类属性进行操作。
如果想在类的外部获取类的信息,必须使用类方法来实现。

(2)基本语法

类方法 :
class 类名称():
类属性 = 属性值

@classmethod => 装饰器
def 类方法(cls):
    因为这个方法属于类方法,所以cls代表这个类本身

调用类方法:
类名称.类方法() => 强烈推荐使用第一种
对象.类方法()

(3)案例

案例:统计Tool工具类到底生成了多少个工具类对象

class Tool(object):
    # 定义一个类属性
    count = 0
    # 定义对象属性
    def __init__(self, name):
        self.name = name
        # 对类属性进行操作,进行+1
        Tool.count += 1
    # 定义一个类方法专门用于操作类属性
    @classmethod
    def getCount(cls):
        return f'您一共实例化了{cls.count}个对象。'

# 实例化对象
t1 = Tool('斧头')
t2 = Tool('榔头')
t3 = Tool('锤子')

# 调用类方法,输出一共创建了多少个对象
print(Tool.getCount())

结果:
在这里插入图片描述

3、Python中的静态方法

(1)静态方法描述

什么样的方法可以封装为静态方法?
答:既不需要调用自身属性(对象属性、类属性),也不需要调用自身方法(对象方法、类方法),本身就是一个独立功能。

(2)语法

定义:
class 类名称():
@staticmethod
def 静态方法():
由于静态方法本身就是一个独立功能,既不需要调用自身属性也不需要调用自身方法,所以其没有参数。
调用静态方法: 类名.静态方法() 或者 对象.静态方法()

(3)案例

class StudentManager(object):
    # 打印系统功能菜单
    @staticmethod
    def menu():
        print('-' * 40)
        print('欢迎使用传智教育学生管理系统V1.0')
        print('【1】添加学员信息')
        print('【2】删除学员信息')
        print('【3】修改学员信息')
        print('【4】查询学员信息')
        print('-' * 40)

# 调用静态方法 => 类名.静态方法() 或者 对象.静态方法()
StudentManager.menu()

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值