python类

类变量

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

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

类的文档字符串

类内第一个没有赋值给任何变量的字符串为类的文档字符串
类的文档字符串可以用类的 __doc__属性访问

 

>>> help(Dog)  # 查看文档字符串
  print(Dog.__doc__)  # 类的__doc__属性用来绑定文档字符串

类的 __slots__ 列表

作用:
    限定一个类创建的实例只能有固定的属性(实例变量)
    不允许对象添加列表以外的属性(实例变量)
    防止用户因错写属性的名称而发生程序错误
说明:
    1. __slots__列表绑定一个字符串列表
    2. 含有__slots__列表的类所创建 的实例对象没有__dict__属性,即此实例不用字典来存储对象的属性(实例变量)

 

示例:

# 此示例示意 类内的__slots__列表的用法?
class Human:
    # 以下列表限制此类的对象只能有'name' 和'age' 属性
    __slots__ = ['name', 'age']

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


h1 = Human("Tarena", 15)
print(h1.age)  # 15
# h1.Age = 18  # 出错,h1对象没有Age属性,也不允许有Age属性
print(h1.age)  # 15

类方法 @classmethod

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

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

 

示例:

# 此示例示意类方法的使用
class A:
    v = 0

    @classmethod
    def get_v(cls):  # cls 用来绑定调用此方法的类
        return cls.v  # 访问类变量

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


print(A.get_v())  # 0
A.set_v(100)
print(A.get_v())  # 100
a1 = A()  # 创建实例
print("a1.get_v() =", a1.get_v())  # 100
a1.set_v(200)
print("a1.get_v() =", a1.get_v())  # 200
print('A.get_v() =', A.get_v())

静态方法 @staticmethod

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

  说明:
    静态方法需要使用 @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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值