python面向对象编程(三)

Python 面向对象编程 三 通过重载和重写实现多态 当我们为一个类编写方法时,从名称空间的角度来看,它们实际上是一个类的属性,因此不能有相同的名称。方法重载是一种实现多态性的方法,它让多个方法具有相同的名称,但参数的类型或数量不同(返回类型可以相同也可以不同,每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表)。在面向对象编程中(OOP)中,多态性是实例以多种方式做事的能力,以及使用具有相同名称和相同参数的相同方法的能力,根据它所属的类以不同的方式做事。这是Python中一个更流行的多态概念,因为它与继承密切相关,是实现继承的强大方法之一。 阅读详情

python面向对象编程(三)

  • 成员修饰符
    共有成员; 外部对象可以直接访问
    私有成员; 变量前加2下划线,默认为创建的为私有成员。无法直接访问,只能通过创建中间函数间接访问。
class foo:
	sex1 = 'men1'
	__sex = 'men'
    def __init__(self,name,age):
        self.name = name
        self.__age = age

	def show(self):
		return self.__age
	
	@staticmethod
	def show2()
		return foo.__sex

obj = foo('gao','18')
print(obj.name) # gao
print(obj.__age) # 报错 AttributeError: 'foo' object has no attribute 'age'
print(obj.show()) # 18 可以已此方法访问

print(foo.sex1) # men1 静态字段同样支持此方式
print(foo.__sex1) # 报错 AttributeError: 'foo' object has no attribute '__sex1'
print(foo.show2()) # men

上代码看到,无论普通字段还是静态字段,均具有共有私有方法;
那么看看方法有没有共私有之分

class foo:
    def __fi(self):
        return 123

    def f2(self):
        r = self.__fi()
        return r

f = foo()
print(f.f2()) # 123

方法,同样有共有私有之分,当然属性也存在共私有之分,但基本上不会使用。
只有在字段与方法上,会使用成员修饰符进行共私有设置。
注意:私有不支持继承,只能自己另外创建一个共有方法间接访问父类私有

  • 特殊成员
    __init__:先前说的一个__init__构造方法就是一个特殊成员:当类加括号是,默认执行__init__
    __new__:new方法与init几乎一致,都是在创建对象时自动执行的。两者的区别是:
    a 、 __new__方法是创建对象时执行的;__init__方法是初始化对象时执行的;
    b 、 __new__方法传入第一个参数是cls即类本身,作用是将类对象本身作为模板去创建一个实列对象;__init__方法传入第一个参数是self,即已经实列的对象;
    c 、__new__方法必须要有返回值,返回值就是新建的对象;__init__方法没有返回值;
    使用__new__方法构建单例模式:

    class foo:
        _instance = None
        def __new__(cls):
            if cls._instance is None:
                cls._instance = object.__new__(cls)
            return cls._instance
    
    a = foo()
    b = foo()
    print(id(a),a) # 2192770708368 <__main__.foo object at 0x000001FE8B51B390>
    print(id(b),b) # 2192770708368 <__main__.foo object at 0x000001FE8B51B390>
    # 根据id可以看出,a、b这两个id时完全一致的,故这两个实 例实际上是一个
    
    

    __del__析构方法:构造方法时创建对象时执行的,析构方法是,对象销毁时,自动执行的,一般用不到,是python垃圾回收机构销毁对象时,自动处理了,我们无法管控。
    __call__:当类创建对象时,可以在对象后加括号,默认为执行__call__这个特殊方法

    class foo:
    	def __init__(self):
        	print('init')
    
    	def __call__(self):
        	print('call')
    
    a = foo() # init
    a() # call
    

    __int__、__str__:这俩种方式在对象调用int()或str()函数时,会自动调用此两种方法:

    class foo:
    	def __init__(self,name):
        	self.name = name
    
    	def __int__(self):
        	return 111
    
    	def __str__(self):
        	return self.name
    
    a = foo('gao') # init
    print(a) # gao 当类中没有定义__str__特殊成员时 打印的内容为 <__main__.foo object at 0x000002887294B2E8> 
    print(str(a)) # gao
    print(int(a)) # 111
    

    __add__:两对象相加时,自动执行第一个对象的__add__方法,并将第二个对象当参数传入。执行逻辑自定义

    class foo:
    def __init__(self,n,a):
        self.name = n
        self.age = a
    
    def __add__(self, other):
        return self.age+other.age
    
    obj1 = foo('gao',21)
    obj2 = foo('qi',20)
    
    a = obj1+obj2
    print(a) # 41
    

    除了__add__加方法,还有减乘除,不多展示;

    __dict__:将对象中封装的所有内容通过字典的形式返回,或将类中的成员已字典形式返回

    class foo:
    	'''
    	注释:
    	foo 是用来测试__dict__方法返回类成员的
    	'''
    	def __init__(self,n,a):
        	self.name = n
        	self.age = a
    
    obj1 = foo('gao',21)
    obj2 = foo('qi',20)
    a = obj1.__dict__
    print(a) # {'name': 'gao', 'age': 21}
    
    print(foo.__dict__) # {'__module__': '__main__', '__doc__': '\n    \t\t注释:\n    \t\tfoo 是用来测试__dict__方法返回类成员的\n    ', '__init__': <function foo.__init__ at 0x00000133A6A800D0>, '__dict__': <attribute '__dict__' of 'foo' objects>, '__weakref__': <attribute '__weakref__' of 'foo' objects>}
    
    

    __getitem__、__setitem__、__delitem__:基于列表的方式,处理对象。

    class foo:
    	def __init__(self, n, a):
        	self.name = n
        	self.age = a
     	def __getitem__(self, item):
       	 	return item + 10
    	def __setitem__(self, key, value):
        	print('__setitem__',key, value)
    	def __delitem__(self, key):
        	print('__delitem__',key)
    
    obj1 = foo('gao', 21)
    a = obj1[10]
    print(a)  # 20
    
    obj1[2] = 'aa' # __setitem__ 2 aa
    
    del obj1[12] # __delitem__ 12
    

    在学列表对于列表处理时:除了增删改查,还有个切片处理:

    class foo:
    	def __init__(self, n, a):
        	self.name = n
       	 self.age = a
    
    	def __getitem__(self, item):
        	print(item,type(item))
        	return item,type(item)
    
    obj1 = foo('gao', 21)
    obj1[10] # 10 <class 'int'>
    obj1[1:10:2] # slice(1, 10, 2) <class 'slice'>
    
    

    可以看出,在做切片时,传入的是一个名为slice的对象,那么,在处理切片时,即可以如下处理;

    class foo:
    	def __init__(self, n, a):
        	self.name = n
       	 self.age = a
    
    	def __getitem__(self, item):
        	print(item,type(item))
        	if type(item) == slice:
            	print('调用切片处理')
            	print(item.start) # 切片开始位置
           	 	print(item.stop)  # 切片结束位置
            	print(item.step)  # 切片步长
            	'''
            	添加自己想要添加的处理方式即可
           	 	'''
        	else:
            	print('调用内部索引处理')
        	return item,type(item)
    
    obj1 = foo('gao', 21)
    obj1[10] # 10 <class 'int'> 调用内部索引处理
    obj1[1:10:2] # slice(1, 10, 2) <class 'slice'> 调用切片处理 1 10 2
    
    

    __iter__:之前学习迭代器时,有个iter()方法,可以将一个可迭代对象生成一个迭代器,现在一样,__iter__被执行后,获取的对象__iter__的返回值,循环返回值返回的对象。
    如果类中有这个方法,他创建的对象就叫做可迭代对象,
    对于可迭代对象.iter()的返回值,就是迭代器,
    对于for循环遇到迭代器,就可以直接进行next()调用
    对于foo循环遇到可迭代对象,就需要执行__iter__()先生成迭代器,在进行next()循环。

    class foo:
    	def __iter__(self):
        	return iter([11,22,33,44])
    
    a = foo()
    
    for i in a:
    	print(i) # 11 22 33 44
    

    __slots__:限制类对象属性。此限制只存在于此类中,对于他的父类或子类都不受影响。

    class Foo:
        __slots__ = ('name', 'age')
    
    a = Foo()
    a.name = 'ming' # 正常向实例对象中插入属性
    a.age = 18     # 正常向实例对象中插入属性
    a.sex = 'men' # AttributeError: 'Foo' object has no attribute 'sex'
    

    __len__:可根据len()函数返回设定值:

    class Foo:
        def __len__(self):
            return 3
    
    a = Foo()
    print(len(a)) # 3
    

    __getattr__:定义一个不存在的属性,当对象调用不存在的属性时,返回对应的内容

    class Foo:
        def __init__(self):
            self.name = 'marry'
        def __getattr__(self, item):
            if item == 'sex':
                return 'women'
    
    s = Foo()
    print(s.name) # marry  存在name属性,取值
    print(s.sex)  # women  使用__getattr__特殊方法返回属性 注意只有当内容中不存在想要调用的属性时,才会执行__getattr__方法,存在会返回原属性内容
    print(s.age)  # None   不存在此属性,默认返回None 可以通过raise自定义一个属性不存在报错
    

    __instance:创建单列模式;何为创建单列模式,正常的类,每次实例化都会创建一个实例化对象,如果存在__onstance这个私有变量是,该类实列化时,不会创建新的对象,而会将已经创建的实列对象返回,故称之为:单列模式。

    class Foo:
    	__instance = None
        def __new__(cls,name,age):
        	# 如果类属性__instance 的值为None 就会创建一个对象,并赋值为这个对象引用,保证下次调用这个方法时,能够知道已经创建对象了,这样就保证了,永远都只存在一个对象
            if not cls.__instance:
            	cls.__instance = object.__new__(cls)
            return cls.__instance
    
    s = Foo('gao',23)
    s2 = Foo('cao',21)
    # 打印出两个对象的id可知,地址完全一致,是一个对象
    print(id(s))
    print(id(s1))
    
    s.age = 19 # 给a对象属性赋值
    print(s2.age) # 19
    
    

    __doc__:编写改类的说明文档,可通过help()函数调用

Python面向对象编程(三) Python面相对象编程之继承 继承的一般格式 &gt;&gt;&gt; class A: pass &gt;&gt;&gt; class B(A): #B类继承A类 pass 类的继承是指在现有类的基础上,创建一个新的类,构建出来的新类被称为子类,现有的类被称为 父类,字类会自动拥有父类的和属性和方法,但是要注意的时,子类无法继承父类的私有属性和方法 &gt;&g... 阅读详情

相关推荐

【AI开源】Understand-Anything 完整使用教程(2026最新版)

Understand-Anything是一款基于交互式知识图谱的AI学习与开发平台,能够将代码库转化为可视化知识结构,支持语义搜索、上下文问答和全流程开发。核心功能包括代码知识图谱化、AI辅助学习和多编码代理集成。支持TypeScript/JavaScript、Python等多种语言,要求Node.js 20+和16GB以上内存。提供NPM、Docker和源码三种安装方式,支持增量更新和团队知识共享。与同类产品相比,在交互式图谱、语义搜索和AI集成方面更具优势。适用于代码学习、大型项目维护和团队协作等场景。

与时俱进,开放共享 7216

关于def __init__(self)的一些知识点

转载自:https://zhuanlan.zhihu.com/p/55237543 关于def __init__(self)的一些知识点 胖二十斤等189人 def __init__(self)在Python里面很常见, Python中的self 在Python中的类Class的代码中,常看到函数中的第一个参数,都是self。以及Class中的函数里面,访问对应的变量(读取或者写入),以及调用对应的函数时,经常有以下代码: ①self.valueName valueName:表示self对象

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 2万+

SQL实现数据仓库ETL:分层设计、增量抽取与性能优化实践

在数据仓库建设过程中,ETL(抽取、转换、加载)是数据流转的核心环节。传统观点常将ETL与专业工具或大数据框架绑定,但在中小规模数据场景下,基于SQL的ETL方案凭借低门槛、高可维护性和直观的排错体验,成为高效且务实的选择。本文从ETL的基础概念出发,阐述数据仓库分层(ODS、DWD、DWS、ADS)中每层ETL的定位与职责,重点剖析增量抽取策略(时间戳、主键、日志)下的SQL实现方式,以及数据清洗、去重和格式化的常见写法。同时,结合真实项目经验,分享慢SQL优化技巧、任务调度依赖设计、幂等性保障和常见问题

weixin_33290540的博客 346

python 面向对象编程三

继承和多态 •继承是面向对象的重要特性之一,可实现代码的重用。 •通过继承可以创建新类,给既有类的副本添加变量和方法。 •原始的类称为父类或超类,新类称为子类或派生类。 •继承可以重用已经存在的数据和行为,减少代码的重复编写。 •Python在类名后使用一对括号表示继承关系,括号中即为父类。 关于在单继承关系中的构造函数: •python中如果子类有自己的构造函数,不会自动调用父类的...

lhaniey的博客 426

Skynet 框架面试题

本文整理了游戏服务端开发面试中 Skynet 框架的高频考点,涵盖底层架构、消息派发、协程调度、网络 I/O、harbor 跨机通信、内存管理、socket 处理、阻塞操作、错误处理等核心内容。全面覆盖 Skynet 框架的原理、使用和实战问题,追求深入准确,拒绝八股文。

小赖的博客 383

节卡Jaka Zu APP编程避坑指南:从频繁通讯错误到稳定Socket交互的调试心得

本文详细解析了节卡Jaka Zu APP编程中常见的通讯错误问题,并提供了从基础排查到高级调试的完整解决方案。通过优化网络配置、固件匹配、心跳机制和数据交互规范,开发者可实现稳定的Socket通讯,有效提升工业机器人操控的可靠性。文章特别针对v1.6.7.3版本的典型问题给出了实用调试技巧。

weixin_42639633的博客 325

Python面向对象编程《Python编程 从入门到实践》总结三

Python面向对象编程《Python编程 从入门到实践》总结三类创建和使用类使用类和实例继承 类 面向对象编程是最有效的软件编写方式之一。根据类来创建对象被称实例化,可以使用类的实例。 创建和使用类 创建Dog类,这个类让Python知道如何创建表示小狗的对象。 创建Dog类 根据Dog类创建的每个实例都将存储名字和年龄。我们赋予了每条小狗蹲下sit()和打滚roll_over()的能力: ...

Senimo 601

第95章 安全工程师:Shell 脚本实现安全扫描、漏洞检测、日志审计

随着网络安全威胁日益复杂,传统的手动安全管理已无法满足现代企业的安全需求。Shell 脚本为安全工程师提供了强大的自动化能力,能够实现 7×24 小时的安全监控、快速漏洞扫描、智能日志分析和实时威胁响应。本章将系统介绍如何使用 Shell 脚本构建完整的安全防护体系,从基线检查到实时监控,帮助你打造自动化的安全运维能力。

猪猪侠 90

Python面向对象编程:继承和多态③

继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用和层次化设计。通过继承,子类不仅可以拥有父类的所有属性和方法,还可以添加自己的属性和方法,甚至重写父类的方法。在Python中,定义父类和子类非常简单。

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 4148

YOLOv11改进 | Conv/卷积篇 | 轻量化多尺度异构卷积(MSHC)优化YOLOv11精度(全网独家首发)

本文介绍了Hype-YOLO提出的MANet结构,这是C3、C2f、C3k2的升级版,能显著增强特征提取能力。MANet整合了DSConv和C2f结构,通过多分支异构设计提升梯度流动和特征语义深度。文章详细解析了MSHC模块的原理,包括其多尺度并行建模、通道混洗等核心机制,并提供了完整的代码实现和训练教程。实验表明,Hype-YOLO的精度优于YOLOv11。该结构在保持轻量化的同时,通过异构分支设计实现了更丰富的特征表达,适用于目标检测等视觉任务。

Snu77的博客 952

黑猫带你学UFS协议第12篇:UFS标志(Flags)和属性(Atrributes)详解

UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。 简单来说,flag和attribute、discriptor一样,都是ufs的寄存器罢了。只不过spec将这些寄存器分类了,分成这三种大的类型了而已。 标志可以被清除、复位、设置、触发、读。 主机也是通过设备管理器的Query Request UPIU来读取或者写标志。

黑猫奥利奥的博客 2083

Python3 面向对象编程第二版(三)

在本章中,我们涵盖了一系列杂项主题。每个主题都代表了 Python 中流行的重要非面向对象的特性。仅仅因为我们可以使用面向对象的原则,并不意味着我们总是应该这样做!但是,我们也看到 Python 通常通过为传统面向对象的语法提供语法快捷方式来实现这些功能。了解这些工具背后的面向对象原则使我们能够更有效地在自己的类中使用它们。我们讨论了一系列内置函数和文件 I/O 操作。在调用带有参数、关键字参数和可变参数列表时,我们有许多不同的语法可供选择。

龙哥盟 839

基于FPGA的数字图像处理-直方图操作【3.3】

对于固定的位宽和图像分辨率来说,这个计算过程是 可定量的,也就是这个归一化系数是已知的。1.直方图累计和 根据数学定义,直方图累加和的定义是小于指定像素的所有像素 的统计值之和。在实际应用中,处理帧缓存是费时费力费资源的一件事情,在许 多情况下,图像的变换比较慢,在这种情况下的一个近似是当建立当 前帧的直方图统计结果时使用从前一帧得到的映射。由测试结果可见,这两幅过曝光和曝光不足的图像,经过均衡化 之后的效果图差别不大,对比度都非常高,设计代码达到了预期的均 衡目的。累加和的计算情况如图6-28所示。

qq_43416206的博客 1126

Python基础编程(三)——面向对象编程

这一章,咱们将进入一个新的部分,面向对象编程,在编程中也是很实用的一部分。在面向对象编程中,我们将编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。根据类来创建对象被称为实例化 ,这让我们能够使用类的实例。面向对象编程,是将数据与函数绑定到一起,进行封装,能够减少重复代码的重写过程。 一、基本概念 二、创建和使用类 三、封装、继承和多态 四、成员保护和访问限制 五、特殊成员和魔法方法 一、传递任意数量的实参       Python基础部分: 第一篇:Python基础

brilliant666的博客 426

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python基础(三)面向对象编程

面向对象编程,在英文中称之为Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。Python是一个纯天然面向对象的编程语言,在Python中所有数据类型都可以视为对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。

dingyahui的博客 714

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

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

【Python开发实践 三】Python面向对象编程

本文是为有Java经验的开发者快速上手Python面向对象编程的指南。文章通过对比Java和Python的语法差异,重点讲解Python面向对象的核心概念,包括类的定义与实例化、构造方法__init__、self关键字的作用、类属性与实例属性的区别等。Python的面向对象更灵活简洁,支持动态添加属性,实例化无需new关键字,构造方法名为__init__,且必须显式使用self参数。此外,Python通过类属性和实例属性实现类似Java静态变量和实例变量的功能。文章采用代码对照方式,帮助开发者快速理解两种语

MaoLin Tian's Blog 319

Camera2Demo

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

Python入门系列三-面向对象编程基础

类定义了对象的属性和行为(方法)。封装是面向对象编程中的一个重要概念,它将数据和方法打包成一个单元(类),并且限制外部对数据的访问。每个对象都有独立的属性(数据)和方法(功能),它们通过类的定义被创建出来。一个类可以创建多个对象,每个对象都是类的一个实例。继承是面向对象编程的一个重要特性,它允许一个类继承另一个类的属性和方法。在Python中,类的属性和方法默认为公有的,即可以在类外部直接访问。类的方法是定义在类中的函数,用于操作类的属性或执行某些行为。方法,尽管它们的方法名相同,但每个类的行为是不同的。

weixin_42146176的博客 733

Python学习笔记(三):面向对象编程

外,还可以使用。

Miracle8070 1526

python面向对象编程第三版_Python面向对象编程(三)

封装1.为什么要封装?封装就是要把数据属性和方法的具体实现细节隐藏起来,只提供一个接口。封装可以不用关心对象是如何构建的,其实在面向对象中,封装其实是最考验水平的2.封装包括数据的封装和函数的封装,数据的封装是为了保护隐私,函数的封装是为了隔离复杂度3.数据的封装就是在属性前面加一个__classPeople:def __init__(self,name,age,salary):self.name...

weixin_39915427的博客 144

python面向对象编程三、继承和多态

继承 在OOP【面向对象编程——Object Oriented Programming】程序设计中,定义一个class的时候,可以从现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class) 父类 class animal(object): def run(self): print('animal is running') 子类 class animal(object): def

weixin_51652371的博客 192

【Python进阶(三)】——面向对象编程

该篇文章首先利用Python展示了其面向对象编程的特性,包括类的定义方法;类中的特殊方法;类之间的集成关系;私有属性极@property装饰器;self和cls;new与init的区别和联系等内容。

jd1813346972的博客 620

python知识点(三)面向对象编程

面向对象编程 1、步骤 1)OOA面向对象分析 2)OOD面向对象设计 3)OOP面向对象编程 2、实现 1)分析对象特征和行为 2)写类对象模板 3)实例化 举例 class Book: count=0; #属于类,但不属于实例化对象的特征或方法 def __init__(self, title, price=0.0, author=None): # 构造函数,初始化时执行 ...

han_stars的博客 204

Python进阶 -- 面向对象编程③

目录私有属性和私有方法01. 应用场景及定义方式02. 伪私有属性和私有方法单例01. 单例设计模式单例设计模式的应用场景02. `__new__` 方法03. Python 中的单例只执行一次初始化工作多态多态案例演练 私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 不希望公开的 方法 定义方式 在 定义属性或方法时,在 属性名或

十八岁讨厌编程的博客 375

Python 面向对象编程(三)继承与多态

在前面一篇文章中谈到了类的基本定义和使用方法,这只体现了面向对象编程的三大特点之一:封装。下面就来了解一下另外两大特征:继承和多态。 在Python中,可以让一个类去继承一个类,被继承的类称为父类或者超类、也可以称作基类,继承的类称为子类。并且Python支持多继承,能够让一个子类有多个父类。 一.继承和多继承 class superclass(): ..

chongtianfeiyu 5891

python基本语法(面向对象编程、三大特性)

面向对象编程 1.面向过程编程 【1】概念 “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 【2】特性 模块化、流程化 【3】优点 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;单片机、嵌入式开发、liinux/unix等一般采用面向过程开发,性能是最重要的因素。 【4】缺点 没有面向对象易维护、易复用、易扩展 2.函数式编程 函数式编程是种编程方式,它

weixin_46268244的博客 331
上一篇: python面向对象编程
下一篇: python中的异常处理
gqf960708
博客等级 码龄9年 5粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值