python中类的总结二

本节介绍类变量及类方法
类变量定义
类变量是类的属性,此属性属于类,不属于此类的实例。

作用
通常用来存储该类创建对象的共有属性。
说明
类变量可以通过该类直接访问。
类变量可以通过类的实例直接访问。
类变量可以通过此类的对象的__class__属性间接访问。

示例代码如下:

# 此示例示意类变量的定义和用法
class Human:
    total_count = 0  # 类变量,用来记录Human对象的个数
    pass


print(Human.total_count)  # 0 访问类变量
h1 = Human()  # 创建一个对象

print(h1.total_count)  # 0 借助于此类的实例访问类变量(类属性)

h1.total_count = 10000  # 这一步为实例添加实例属性
print(h1.total_count)  # 10000
print(Human.total_count)  # 0

#类变量可以通过此类的对象的__class__属性间接访问
h1.__class__.total_count += 1  # 等同于Human.total_count += 1
print(Human.total_count)  # 1

# Human.total_count += 1  # 改变类变量
# print(Human.total_count)  # 1
# 此示例示意用类变量来记录Human对象的个数
class Human:
    total_count = 0  # 类变量,用来记录Human对象的个数

    def __init__(self, n):
        self.name = n
        self.__class__.total_count += 1
        print(n, '对象被创建')

    def __del__(self):
        print(self.name, '对象被销毁')
        self.__class__.total_count -= 1


L = []
L.append(Human('张飞'))
L.append(Human('关羽'))
print("当前人物个数是:", Human.total_count)
del L[1]
print("当前人物个数是:", Human.total_count)

类方法定义
类方法是用于描述类的行为的方法,类方法属于类,不属于类的实例对象。

说明
类方法需要使用@classmethod装饰器定义。
类方法至少有一个形参,第一个形参用于绑定类,约定写为’cls’。
类和该类的实例都可以调用类方法。
类方法不能访问此类创建的对象的实例属性。

class A:
    v = 0  # 类变量(类属性)

    @classmethod
    def get_v(cls):
        return cls.v  # 用cls 访问类变量v

    @classmethod
    def set_v(cls, a):
        cls.v = a

print('A.v = ', A.get_v())  # 调用类方法得到类变量的值
A.set_v(100)

print("A.v =", A.get_v())  # 100
print(A.v)  # 100

静态方法
静态方法是定义在类的内部的函数,此函数的作用域是类的内部。
说明:
静态方法需要使用@staticmethod装饰器定义。
静态方法与普通函数定义相同,不需要传入self实例参数和cls类参数。
静态方法只能凭借该类或类创建的实例调用。
静态方法不能访问类变量和实例变量。

示例代码如下:

# 此示例示意静态方法的定义和使用
class A:
    @staticmethod
    def myadd(a, b):
        return a + b


print(A.myadd(100, 200))  # 300
a = A()
print(a.myadd(300, 400))  # 700

每天进步一点点~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值