类的变量和类方法

类变量:

定义:

    类变量是类的属性,此属性属于类,不属于此类的实例

作用:

    通常用来存储该类创建对象的共有属性

说明:

    类变量可以通过该类直接访问

    类变量可以通过类的实例直接访问

    类变量可以通过此类的对象的__class__属性间接访问

示例:

  class Human:

    total_count = 0  # 类变量,用来记录Human对象的个数
    pass


print(Human.total_count)  # 访问类变量

h1 = Human()
print(h1.total_count)
h1.total_count = 100
print(h1.total_count)
print(Human.total_count)

类的文档字符串:

类内第一个没有赋值给任何变量的字符串为类的文档字符串

类的文档字符串可以通过help()函数查看

类的文档字符串绑定在类的__doc__属性上

类的__slots__列表:

作用:

    限定一个类创建的实例只能有固定的属性(实例变量)

    不允许对象添加列表以外的实例属性(实例变量)

    防止用户因写错属性名而发生程序错误

说明:

    __slots__属性绑定一个字符串列表

    含有__slots__属性的类所创建的实例对象没有__dict__属性,即此实例不用字典来存储

对象的实例属性

示例:
# 此示例示意类内__slots__列表的用法和作用
class Human:
    __slots__ = ['name', 'age']

    def __init__(self, n, a):
        self.name = n
        self.age = a

    def info(self):
        print(self.name, '今年', self.age, '岁')


h1 = Human('小张', 8)
h1.info()
print(h1.__dict__)  # 此处出错,在类中添加__slots__列表后,就不存在__dict__属性了
h1.Age = 9  # 此处会出错,__slots__列表没有Age属性
h1.info()

类方法:

定义:

    类方法是用于描述类的行为,类方法属于类,不属于类的实例

说明:

    类方法需要使用'@classmethod'装饰器定义

    类方法至少有一个形参,第一个形参用于绑定类,约定为'cls'

    类和该类的实例都可以调用类方法

    类方法不能访问此类创建的对象的实例属性

示例见:

class A:
    v = 0  # 类属性

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

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


print("A.v =", A.get_v())
A.set_v(10)
print("A.v =", A.get_v())

静态方法:

静态方法是定义在类的内部的函数,此函数的作用域是类的内部

说明:

    静态方法用'@staticmethod'装饰器定义

    静态方法和普通函数定义相同,不需要传入self和cls参数

    静态方法只能凭借该类或类创建的实例调用

    静态方法不能访问类变量和实例变量

示例:

 class A:
    @staticmethod
    def myadd(a, b):
        return a + b


print(A.myadd(1, 2))
a = A()
print(a.myadd(3, 4))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值