Python3 类的内置属性、内置方法(魔法方法)、常用装饰器

【Python】新手入门:什么是python装饰器?如何使用python装饰器?什么是python类装饰器?什么是python内置装饰器? Python装饰器是一种高级功能,能够在不修改原代码的情况下动态增强函数或类的行为。其核心原理是通过嵌套函数包装目标函数,在调用前后添加额外逻辑,例如日志记录、性能分析或权限控制。装饰器语法简洁,使用@符号即可快速应用。它支持参数传递,也能通过多层嵌套实现复杂功能。此外,装饰器不仅适用于函数,还能扩展类功能,如实现单例模式或属性管理。内置装饰器如静态方法和类方法进一步简化了代码结构。这种设计模式显著提升了代码复用性和可维护性,是Python编程中极具特色的重要特性。 阅读详情

前言

  • 在 Python 3 中,类的内置属性和特殊方法(魔法方法)提供了非常丰富的功能和灵活性
  • 同时,一些内置的装饰器、常用的装饰器也起到了很棒的效果
  • 为了方便各位查阅, 笔者尽最大努力地归纳了 Python 3 中类的属性、特殊方法(魔法方法)和 一些装饰器
  • 希望本文能够帮助到你

类

内置属性

常见

  • __name__:类的名称(字符串)
  • __doc__:类的文档字符串(字符串)或None(如果没有定义)
  • __module__:类定义所在的模块名称(字符串)
  • __bases__:类的所有基类构成的元组(对于内置类型,可能为空或包含object)
  • __dict__:类的属性(包括方法)构成的字典。注意,对于内置类型,这个字典可能不包含有用的信息
  • __class__:在实例上使用时,指向实例的类;在类上使用时,通常返回type或其元类
  • __mro__:类的方法解析顺序(MRO)列表,用于确定继承时方法调用的顺序

其他

  • __annotations__:类的注解字典,用于存储变量注解和函数注解(Python 3.7+)

  • __qualname__:类的限定名(包括其包、模块和父类)

  • __subclasshook__():一个类方法,用于自定义子类检查。当使用issubclass()函数检查一个类是否是另一个类的子类时,如果第一个类定义了__subclasshook__()方法,则会调用该方法

内置方法 (魔法方法)

构造和初始化

  • __new__(cls, [...]):用于创建并返回类的实例的特殊静态方法,通常在__init__()之前被调用
  • __init__(self, [...]):在实例创建后调用,用于初始化实例
  • __del__(self):在实例被销毁前调用,用于执行清理操作
  • __init_subclass__(cls, **kwargs): 当一个类被继承时调用,在子类的__init__方法之前

运算符重载

  • __add__(self, other):定义加法运算符+的行为
  • __sub__(self, other):定义减法运算符-的行为
  • __mul__(self, other):定义乘法运算符*的行为
  • __truediv__(self, other):定义真除法运算符/的行为
  • __floordiv__(self, other):定义地板除法运算符//的行为
  • __mod__(self, other):定义取模运算符%的行为
  • __pow__(self, other[, modulo]):定义乘方运算符**或**=的行为
  • __iadd__(self, other):定义加法赋值运算符+=的行为
  • __isub__(self, other):定义减法赋值运算符-=的行为
  • __imul__(self, other):定义乘法赋值运算符*=的行为
  • __itruediv__(self, other):定义真除法赋值运算符/=的行为
  • __ifloordiv__(self, other):定义地板除法赋值运算符//=的行为
  • __imod__(self, other):定义取模赋值运算符%=的行为
  • __ipow__(self, other[, modulo]):定义乘方赋值运算符**=的行为
  • __neg__(self):定义取反运算符-的行为
  • __pos__(self):定义取正运算符+的行为
  • __abs__(self):定义绝对值函数abs()的行为
  • __invert__(self):定义按位取反运算符~的行为
  • __lt__(self, other):定义小于运算符<的行为
  • __le__(self, other):定义小于等于运算符<=的行为
  • __eq__(self, other):定义等于运算符==的行为
  • __ne__(self, other):定义不等于运算符!=的行为
  • __gt__(self, other):定义大于运算符>的行为
  • __ge__(self, other):定义大于等于运算符>=的行为
  • __or__(self, other):定义集合的并集运算符 | 的行为
  • __and__(self, other):定义集合的交集运算符 & 的行为
  • __sub__(self, other):定义集合的差集运算符 - 的行为
  • __xor__(self, other):定义集合的对称差集运算符 ^ 的行为
  • __divmod__(self, other):定义 divmod() 函数的行为(返回包含商和余数的元组)
  • __round__(self, ndigits=None):定义 round() 函数的行为

类型检查和转换

  • __index__(self):返回对象用于切片、索引和迭代运算的整数
  • __bool__(self): 定义布尔值测试的行为(用于bool()函数)
  • __int__(self): 定义转换为整数的行为(用于int()函数)
  • __float__(self): 定义转换为浮点数的行为(用于float()函数)
  • __complex__(self): 定义转换为复数的行为(用于complex()函数)
  • __instancecheck__(self, instance): 定义isinstance()函数的行为
  • __subclasscheck__(self, subclass): 定义issubclass()函数的行为

可调用对象

  • __call__(self, [...]):定义对象作为函数调用的行为(允许类的实例像函数一样被调用)

反射和自省

  • __dir__(self):当使用dir()函数时调用,返回属性列表
  • __class__(self):返回对象的类
  • __class_getitem__(cls, item): 在Python 3.7+中,定义对类使用方括号索引的行为(如List[int])

垃圾回收

  • __del__(self):当对象即将被垃圾回收器回收时调用
  • __finalize__(self):当对象被垃圾回收器回收前调用,通常与 weakref.finalize() 一起使用

属性描述符

  • __get__(self, instance, owner):用于访问属性值的描述符方法
  • __set__(self, instance, value):用于修改属性值的描述符方法
  • __delete__(self, instance):用于删除属性值的描述符方法

属性访问与管理

  • __get__(self, instance, owner):用于描述符,当访问属性时被调用

  • __set__(self, instance, value):用于描述符,当设置属性时被调用(不管设置什么属性,都会触发)

  • __delete__(self, instance):用于描述符,当删除属性时被调用

  • __getattr__(self, name):当尝试访问不存在的属性时调用

  • __getattribute__(self, name):在访问任何属性时都会调用,无论该属性是否存在(这是一个强大的方法,但因为它会在每次访问属性时都被调用,所以使用时要特别小心以避免性能问题)

  • __setattr__(self, name, value):只在某属性赋值时被调用(即:定义"当设置某个属性时"的行为,有点类似于__init__,但它在每次属性赋值时都会被调用)

  • 与__set__不同——它是对所有属性赋值都起作用的通用方法__delattr__(self, name):在属性删除时调用

容器类型

  • __len__(self):返回容器的长度
  • __getitem__(self, index):获取序列中指定索引的元素
  • __setitem__(self, index, value):设置序列中指定索引的元素的值
  • __delitem__(self, index):删除序列中指定索引的元素
  • __contains__(self, item):定义in运算符的行为,即检查容器中是否包含指定的元素
  • __iter__(self):定义迭代的行为
  • __missing__(self, key): 在字典子类中,当尝试访问不存在的键时调用
  • __reversed__(self): 返回一个迭代器,用于反转容器中的元素

字符串和字节序列

  • __str__(self):定义str()函数的行为,即:返回对象的非正式字符串表示(通常用于print()函数)
  • __format__(self, format_spec): 定义对象的格式化字符串表示(用于format()函数)
  • __bytes__(self):定义转换为字节序列的行为(用于 bytes() 函数)
  • __bytearray__(self):定义转换为字节数组的行为(用于 bytearray() 函数
  • __repr__(self): 返回对象的官方字符串表示(通常用于repr()函数和调试)

上下文管理

  • __enter__(self):定义with语句开始时的行为
  • __exit__(self, exc_type, exc_val, exc_tb):定义with语句结束时的行为

迭代器

  • __iter__(self):返回迭代器对象本身,用于迭代协议
  • __next__(self):返回迭代器的下一个元素,或在迭代完成时引发StopIteration异常

描述符

  • __set_name__(self, owner, name): 当描述符被赋值给类的属性时调用。这是Python 3.6 引入的新方法

哈希

  • __hash__(self):定义对象的哈希值,用于哈希表(如字典)中的键

类型检查

  • __instancecheck__(self, instance):用于isinstance()函数,检查实例是否是类的实例
  • __subclasscheck__(self, subclass):用于issubclass()函数,检查一个类是否是另一个类的子类

复制和pickle

  • __copy__(self):返回对象的浅拷贝
  • __deepcopy__(self, memo):返回对象的深拷贝
  • __reduce__(self):返回一个元组,用于pickle模块保存和恢复对象的状态
  • __reduce_ex__(self, protocol):类似于__reduce__,但允许指定pickle协议

序列化和反序列化

  • __getstate__(self): 当使用pickle模块序列化对象时调用,返回需要持久化的状态信息
  • __setstate__(self, state): 当使用pickle模块反序列化对象时调用,使用__getstate__返回的状态信息来恢复对象状态

异步编程

  • __aiter__(self): 定义异步迭代器的__aiter__()方法
  • __anext__(self): 定义异步迭代器的__anext__()方法,返回迭代器的下一个值
  • __aenter__(self): 定义异步上下文管理器的__aenter__()方法
  • __aexit__(self, exc_type, exc_val, exc_tb): 定义异步上下文管理器的__aexit__()方法
  • __await__(self): 定义对象的await表达式行为。这是异步编程中的一部分,通常与async和await关键字一起使用

其他

  • __subclasses__():返回类的直接子类列表(注意:这是一个动态生成的列表,因为新的子类可以在运行时被创建)

  • __prepare__():在元类中用于定制类的命名空间的特殊方法

装饰器

标准库中的装饰器

  • @staticmethod:在类内定义静态方法,该方法不需要特定的类实例即可调用,也不自动传递类实例或类本身作为第一个参数

  • @classmethod:定义类方法,该方法将类本身作为第一个参数(通常命名为cls),而不是类的实例

  • @property:将一个方法转换为属性,允许你像访问数据属性一样调用它(常用于定义计算属性或提供数据的只读访问)【读取属性】

  • @property.setter:与@property一起使用,用于定义属性的设置方法(允许你定义如何设置属性值)【修改属性】

  • @property.deleter:与@property一起使用,用于定义属性的删除方法(允许你定义如何删除属性)【删除属性】

  • @abstractmethod(来自abc模块):在抽象基类中定义一个方法,子类必须实现它,否则子类也是抽象的,不能被实例化

  • @wraps(来自functools模块):用于在创建装饰器时保留被装饰函数的元信息,如函数名、docstring等

  • @lru_cache(来自functools模块):实现最近最少使用(LRU)缓存策略,用于缓存函数调用的结果,提高性能

  • @singledispatch(来自functools模块):实现单分派通用函数,根据第一个参数的类型调用不同的实现

  • @dataclass(来自dataclasses模块):用于自动生成特殊方法(如__init__和__repr__),使数据类更简洁

  • @contextmanager(来自contextlib模块):简化上下文管理器的编写,使其基于生成器

第三方库中的装饰器

  • @login_required(Web框架如Flask-Login):确保用户已登录
  • @cache_page(Django):缓存整个页面响应的内容
  • @transaction.atomic(Django ORM):确保数据库操作是原子性的
  • @api_view(Django REST framework):将视图函数转换为API视图
  • @async_to_sync(Django Channels):将异步函数转换为同步函数
  • @mock.patch(unittest.mock模块):在测试期间模拟或替换对象、函数等

推荐阅读

Python装饰器:从入门到精通 - 全面掌握Python类和装饰器的终极指南 想要成为Python高手?掌握装饰器是必经之路!本文将带你深入理解Python装饰器的精髓,从基础概念到高级应用,全方位提升你的Python编程技能。装饰器(Decorator)是Python中一个极其强大的特性,从Python 2.4版本开始引入,并在后续版本中不断完善和增强。它让我们能够优雅地修改或扩展函数和类的行为,而无需改变其源代码。 2.2 内置装饰器 Python提供了几个强大的内置装饰器:类装饰器是Python面向对象编程中的重要工具,它们能够改变类方法的行为和访问方式。以下是类中常用装饰器的 阅读详情

相关推荐

用Python玩转共现分析:从NLTK到热力图可视化(附完整代码)

本文详细介绍了如何使用Python进行文本共现分析,从NLTK基础文本处理到构建共现矩阵,并实现热力图可视化。通过完整的代码示例,帮助数据分析师和开发者掌握这一揭示词语间关联网络的实用NLP技术,快速从文本中提取语义关系和主题结构。

weixin_29313817的博客 349

详解Python类中的三种方法

前言在Python中定义的类,常用的有三种方法(方法其实就是函数),他们分别是实例方法、类方法和静态方法。他们使用于不同的场景,今天就教大家如何区分并在类中正确的使用他们,达到我们需要的效...

罗罗攀 4066

Homebrew高效升级与国内镜像源配置全攻略

本文详细介绍了如何通过配置国内镜像源(如清华、中科大、阿里云)来高效升级Homebrew,解决国内开发者访问GitHub仓库速度慢的问题。文章提供了从基础配置到永久生效的完整教程,包括常见问题解决和进阶技巧,帮助开发者大幅提升软件包管理效率。

weixin_28835551的博客 416

Python 类中的三种方法及使用技巧

Python 类中的三种方法及使用技巧

代码说,代码让世界更美好。 1273

MFC工具栏增加EditBox和Button

1. 在资源视图中增加EditBox, Button控件,ID分别为ID_EDIT_SEED, ID_BTN_SEED 2. 在CMainFrame中增加成员变量 CMFCToolBarEditBoxButton *m_editSeed; CMFCToolBarButton *m_btnSeed; 3. 在CMainFrame::OnCreate中创建控件 m_editSeed = new CMFCToolBarEditBoxButton(ID_EDIT_SEED, GetCmdMgr()-&.

学习是为了探索这个世界的本质 802

基于FastLIO2与TEB算法的机器狗自主导航系统实战

本文详细介绍了如何为机器狗构建一套基于FastLIO2与TEB算法的自主导航系统。通过整合FastLIO2激光惯性里程计实现精准定位,并采用TEB局部规划器进行灵活路径规划与动态避障,解决了传统方案在复杂地形下反应慢、易碰撞的问题。文章提供了从环境搭建、算法部署、地图转换到系统调试的完整实战指南,帮助开发者实现机器狗的稳健自主行走。

beer8的博客 320

python类方法、静态方法和实例方法的使用

python中类的方法有三种,分别为: 类方法,通过装饰器@calssmethod进行修饰。 静态方法,通过装饰器@staticmethod进行修饰。 实例方法,属于方法类型的函数。 为什么要分为三种不同的方法呢?他们之间有什么区别和差异呢?首先这三种方法的可以获取类的属性和变量范围不同,具体区别如下: 类方法:不能获取构造函数定义的变量,可以获取类的属性。 静态方法:不能获取构造函数定义的变量,也不可以获取类的属性。 实例方法:既可以获取构造函数定义的变量,也可以获取类的属性值。

sunny 1万+

从入门到精通:MediaGo跨平台部署全攻略,Docker+NAS实战案例深度拆解!

本篇将深入解析开源媒体处理工具MediaGo的运作机制,该软件具备跨平台兼容性,支持Windows、MacOS及Linux三大主流操作系统。其核心创新在于采用模块化架构设计,用户无需额外依赖任何插件即可完成快速部署。作为GitHub平台上的开源项目,该工具特别注重用户体验设计,通过Docker容器化方案可无缝接入各类网络存储设备,显著优化系统资源占用并提升数据处理效率。以飞牛云NAS系统为实施案例,本文将详细展示本地化部署全流程。

Yawesh的博客 1954

【python3】详解属性、方法

调用实例方法的8种方法 (一)、同类中,调用实例方法,有2种方法,通过类对象调用,通过实例对象调用 方法(1)、通过实例对象,调用实例方法 方法(2)、通过类对象,调用实例方法 1、类方法只有一个参数self 的情况: 学习目的:同类中调用方法(实例方法),该怎么处理。 class Cat: def cat_age(self): print('---猫的...

甜芯玉米 853

仿真每日一练 | Workbench下薄板疲劳分析

今天给大家介绍Workbench下薄板疲劳分析,采用稳态分析模块进行评估。完成求解后,插入疲劳工具,同时插入对应的寿命进行查看,如图7和图8所示。采用稳态分析模块,导入几何模型,效果如图1。添加固定约束与扭矩,同时添加转速如图4所示。主要包括7要素,对应的类型见图2。求解完成后查看应力,如图6所示。1-1-3、有限元系统模型构建。1-2-1、加载条件/边界条件。1-1-1、几何模型构建。1-1-2、材料定义。1-2-2、求解设置。1-3-1、查看结果。1-3-2、评估结果。1-3-3、修正结果。

ansysxuexizhe的博客 1071

基于LED可见光通信的物联网系统设计_344

随着物联网技术的不断发展,传统无线通信在工业环境中面临电磁干扰强、通信质量不稳定等问题。为此,本文设计了一种基于LED可见光通信的物联网系统,实现工厂车间内设备状态的稳定、高效、低干扰数据传输。系统主要由设备节点、设备主机、华为云物联网服务器以及可视化上位机构成。 设备节点采集机器的出货量、运行状态、机身温度等关键信息,通过调制后的LED可见光信号发送至设备主机。主机利用红外接收器接收光信号后进行解调处理,并通过WIFI模块将数据上传至华为云IOT服务器。

344

Python3 中类的静态方法、普通方法、类方法

实例方法:需要通过实例来调用,使用self作为第一个参数,可以访问实例和类的属性和方法。类方法:可以通过类名或实例来调用,使用cls作为第一个参数,只能访问类的属性和方法。静态方法:可以通过类名或实例来调用,不需要self或cls参数,不能访问实例和类的属性和方法。在 Python 中,变量的作用域和生命周期取决于其定义的位置。类变量实例变量和局部变量。类变量:定义在类体内、所有方法之外的变量,所有实例共享。实例变量:定义在类的方法中,通过self关键字绑定到实例上的变量,每个实例独立。局部变量。

liulanba的博客 3769

【CANoe】CAPL_ECU上电后首帧报文发出时间检测

【CANoe】CAPL_ECU上电后首帧报文发出时间检测,通过CANoe I/O口检测电压实现

星Yeah 的博客 2508

python 类的使用(5)之类装饰器(类的装饰器和类作为装饰器)

在Python中,类可以作为装饰器,同时也能被函数装饰器所装饰。本文简要介绍了类作为装饰器和函数装饰器装饰类的使用方式,有兴趣的不要错过啊!

keepaware的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 类的使用(3)之类中常用的三个装饰器@classmethod、@staticmethod、@property

python类的使用前面已经写过两篇啦,分别是类使用的基本框架和类变量,这一次想介绍一下类中常用的三个装饰器,分别是classmethod、staticmethod和property,三个方法分别有着十分好用的功能。 同时本文用十分通俗易懂的语言进行讲解,有兴趣的话一定要点进来看看啊。绝对不会吃亏的哦!

keepaware的博客 4662

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python装饰器(自定义装饰器和3个内置装饰器)

Python装饰器详解:从基础到高级应用 摘要:本文系统介绍了Python装饰器的核心概念与应用场景。装饰器本质上是一个接收函数并返回包装函数的可调用对象,通过@语法简化调用。文章涵盖:1) 基础装饰器实现,包括处理参数的*args和**kwargs用法;2) 使用functools.wraps保留元信息;3) 三大内置装饰器:@property(属性封装)、@staticmethod(静态方法)和@classmethod(类方法)的特性与区别;4) 高级应用如多层装饰器和装饰器工厂。装饰器作为Python

2403_89032157的博客 1118

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python内置属性类_python中类的内置属性初探

首先,建立一个类,并用该类创建一个对象,分别查看object,类与对象的内置属性1 importinspect23 classFoo():4 ‘‘‘随便瞎写‘‘‘5 group = ‘buluo‘ #类属性67 @classmethod8 def getnum(cls): #类方法9 return 1231011 def __init_...

weixin_39531635的博客 148

Python一些常用方法

Python一些常用方法 (仅作为个人笔记,如有雷同,请联系删除。。) 1、常用方法: 求阶乘:reduce(lambda x,y:x*y, range(1, 101)) 求和:sum(range(101)) 合并字典:dict1.update(dict2) 去重:[x for x in set(listx)] 排序:listx.sort() | sorted(listx) 统计:collections.Counter(listx) | listx.count(argv) zip(list1, li

weixin_42753043的博客 3259

python 类的使用(4)之类常用的魔法方法

python作为一种面对对象的语言,其中的类就十分充分地体现了这种面对对象的强大功能。Python类具有很多方便实用的功能,本文要介绍的魔法方法更是让类变得好像有魔法一样,使用起来更加随心所欲咯。快来学习吧!

keepaware的博客 1253

Python中内置的常用装饰器

Python中内置的常用装饰器 property | staticmethod | classmethod

小小老大MUTA的博客 1171

python类的魔法方法和装饰器

装饰器 闭包装饰器 装饰器的本质就是一个闭包, 闭包三要素:1 函数嵌套, 2 外部函数返回内部函数的引用, 内部函数使用外部函数的变量 1 使用装饰器简单实现一个登录校验功能 In [1]: user = {"username": "123", "password": 123} def outter(func): ...: def inner(*args, **kwargs): ...: if user.get('token'): ...:

weixin_42861958的博客 478

Java 老手快速入门Python系列(十二)装饰器、@abstractmethod 必须 + ABC 一起用、内置函数 和 魔法方法

本文总结了Python中装饰器、抽象方法、内置函数与魔法方法的核心知识点: 装饰器: 内置装饰器@property、@classmethod、@staticmethod可直接使用 其他装饰器如@abstractmethod、@lru_cache等需要导入相应模块 自定义装饰器必须导入模块后才能使用 @abstractmethod: 必须与ABC(抽象基类)配合使用才有效 未继承ABC时,抽象方法不会强制子类实现,可直接实例化 内置函数与魔法方法: 部分内置函数(如len()、str())对应__len__、

echo的博客 394

12. python元编程与魔法方法

装饰器本质:接受函数/类作为参数,返回新函数/类的可调用对象。元类是类的类,控制类的创建过程(通过。:访问不存在的属性时触发。

qq_17275369的博客 535

3.7 Python3 装饰器

Python装饰器是一种在不修改原函数代码的情况下扩展函数功能的语法工具。装饰器本质上是一个可调用对象,通过@符号使用,能够接收函数并返回新函数。文章介绍了装饰器的基本语法、保留函数元信息的方法、带参数装饰器的实现,以及类装饰器的两种形式。还讲解了内置装饰器@property、@classmethod和@staticmethod的使用,多个装饰器的堆叠顺序,以及装饰器在计时、缓存、权限检查和日志记录等场景的实际应用。合理使用装饰器可以使代码更简洁、可读和可维护。

weixin_40978412的博客 819

Python面向对象加强2.Python 中类的内置属性和内置方法(魔法函数)

Python面向对象加强2.Python 中类的内置属性和内置方法(魔法函数)

weixin_44275448的博客 507

python内置属性与内置方法

一、类方法 类方法:把类看作成一个对象 #语法: #@classmethod----由@开头的叫做装饰器或者修饰器 #def 类方法名(cls,形参): 类方法可以直接使用----->类对象.类方法名() class People02: def __init__(self,name,age): self.name=name self.age=age @classmethod#只针对下面第一个方法生效 def say(cls):#类方法

小长的博客 582
上一篇: 机器学习入门
下一篇: 创建型模式 (Python版)
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值