Python 如何实现方法重载:

在Python中该如何实现Java的重写与重载 前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 名词解析 Java中重写与重载的含义: 重写(Override), 是子类对父类的允许访问的方法的实现过程进行重新编写... 阅读详情

 

Python 通过单分派泛函数部分支持了方法重载。

官方文档是这样定义泛函数以及单分派函数的:

A generic function is composed of multiple functions implementing the same operation for different types. Which implementation should be used during a call is determined by the dispatch algorithm. When the implementation is chosen based on the type of a single argument, this is known as single dispatch.

也就是说单分派泛函数(single dispatch)可以根据第一个参数的类型,来判断执行哪一个函数体。

那么我们使用 singledispatch 重写上面的例子:

首先我们要从functools 中导入 singledispatch

 from functools import singledispatch 

singledispatch 是作为装饰器使用的函数。装饰器是 Python 中的语法糖,@singledispatch 实际上相当于 singledispatch(fprint),这里我们并不关心 singledispatch 的内部实现,我们只需知道 singledispatch 可以实现分派机制就行。NotImplemented 是 Python 中的内置常量,提醒我们没有实现某个功能。注意这与 NotImplementedError 有天壤之别,后者会导致异常出现,终止程序。当调用 fprint() 函数时,如果参数的类型没有被注册,那么默认会执行使用 @singledispatch 装饰的函数。

@singledispatch
def fprint(obj):
    return NotImplemented

 我们使用 @<主函数名>.register(type) 来装饰专门函数。要注意分派函数可以有任意多个参数,但是调用函数时执行哪一部分功能只由函数第一个参数决定,也就是由 register 中声明的参数类型决定。 而对于专门函数来说,函数名是无关紧要的,使用 _ 更加简洁明了。

from functools import singledispatch
​
@singledispatch
def fprint(obj):
    return NotImplemented
​
@fprint.register(str)
def _(obj):
    print('我是一个字符串')
    print(obj)
​
@fprint.register(int)
def _(obj):
    print('我是一个整型')
    print(obj)
​
if __name__ == '__main__':
    fprint('asdasdas')
    fprint(5)
​

Python 3.7 中新增了一个功能:即使用 type annotions 来注明第一个参数的类型。打印结果,与使用装饰器参数得到的结果相同。

from functools import singledispatch
​
@singledispatch
def fprint(obj):
    return NotImplemented
​
@fprint.register
def _(obj:str):
    print('我是一个字符串')
    print(obj)
​
@fprint.register
def _(obj:int):
    print('我是一个整型')
    print(obj)
​
@fprint.register
def _(obj:list):
    print('我是一个列表')
    print(obj)
if __name__ == '__main__':
    fprint('asdasdas')
    fprint(5)
    fprint([1,2,3])

 

基于Python爬虫的新闻热点分析与挖掘 本文介绍了基于Python爬虫的新闻热点分析与挖掘方法,主要包括数据收集、预处理、热点分析和可视化四个部分。首先通过爬虫抓取新浪新闻数据,利用文本清洗和存储技术进行数据预处理;接着采用TF-IDF和LDA算法进行关键词提取与主题建模;最后通过词云图和主题分布图实现数据可视化。该方法能有效识别新闻热点,为信息筛选和决策提供支持。 阅读详情

相关推荐

STM32 SAES硬件加密协处理器全模式工程实践指南

AES(高级加密标准)是嵌入式系统中最基础且关键的对称密码算法,其硬件加速实现直接影响安全、性能与功耗平衡。Secure AES Coprocessor(SAES)作为STMicroelectronics在STM32U5等高安全MCU中集成的专用密码协处理器,不仅支持标准ECB/CBC/CTR模式,更原生兼容GCM和CCM等认证加密模式,具备抗侧信道、密钥保护与DMA卸载能力。理解其寄存器状态机(CHMOD/MODE/CPHASE)、NPBLB数据对齐机制及GCM四阶段编程范式,是规避Tag校验失败、IV错

weixin_42311427的博客 76

python基础——方法、重载、继承、多态

python 基础

qq_41068750的博客 1271

1.2 重叠因子:双重指数移动平均(Double Exponential Moving Average, DEMA)概念与Python实战

双重指数移动平均(Double Exponential Moving Average, DEMA)是一种改进的移动平均线指标,由Patrick Mulloy在1994年开发。相比传统的指数移动平均线(EMA),DEMA通过减少滞后性来提供更快的市场反应。它通过两次计算EMA并进行特殊组合来实现这一目标,可以在保持平滑性的同时减少滞后。

Kewin的博客 2168

Python教程:方法重载

方法重载在Python中起着关键作用。方法有时接受零参数,有时接受一个或多个参数。当我们以不同的方式调用同一个方法时,这就被称为方法重载。Python不像其他语言那样默认支持重载方法。在Python中,两个或多个方法不能有相同的名字,因为方法重载允许我们使同一个操作符具有不同的含义。让我们详细讨论一下方法重载。如果同一个类中的两个或多个方法采取不同的参数,它们可能有相同的名字。方法重载的特性允许同一个操作符有多种解释。重载是指一个方法或操作符可以在同一名称下执行许多功能。

Python热爱者的博客 3002

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1877

VCL for PHP,Konopka Signature VCL Controls (Raize Components 6.2.3) for Delphi 10.4

The Raize Components suite includes a variety of interface design tools for Delphi programming language and C ++ Builder, which includes over 125 VCL controls and over 100 different tools for creating...

weixin_42137539的博客 853

python 函数重载_Python函数如何重载?案例详解

重载这个特性在很多语言中都有实现,比如 C++、Java 等,而 Python 并不支持。这篇文章呢,通过一些小技巧,可以让 Python 支持类似的功能。还要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新pyth...

weixin_39931101的博客 240

【AAAI 2025】轻量级特征增强新范式!FCM 模块助力小目标检测,即插即用提升模型泛化能力

本文介绍了AAAI 2025提出的轻量级特征增强新范式FCM模块,它通过显式分离并双向交互语义与空间特征,有效解决了小目标检测中特征信息失配的核心难题。该模块设计精巧,计算开销极低,能够即插即用式地嵌入YOLO等主流检测网络,显著提升模型对小目标的泛化检测能力,尤其适用于遥感、自动驾驶等对计算资源敏感的实际场景。

weixin_29056145的博客 287

python 面向对象(2)java里的重载实现 & 类变量,对象变量 & 私有变量

java里的重载实现 & 类变量,对象变量 & 私有变量

user_987654321的博客 245

【cocos2dx面试题干货】--2021年最新cocos2dx面试干货(引擎篇)

【cocos2dx面试题干货】--2020年度最新cocos2dx面试干货(引擎篇 ) 大家好,我是Lampard~~ 经过春招一番艰苦奋战之后,我终于是进入了心仪的公司。 今天给大家分享一下我在之前精心准备的一套面试知识。 由于我面试的岗位是cocos2dx的开发岗,今天就先给大家分享一下引擎方面的知识。 本人亲测80%的引擎相关题目都...

Lampard的博客 1万+

mapbox高阶,加载倾斜摄影

本文详细介绍如何基于mapbox-gl v3.8.0版本实现倾斜摄影的加载,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 345

通过函数注解来实现方法重载:Python高级编程指南

通过函数注解来实现方法重载:Python高级编程指南

KE17RS的博客 943

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12

不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1341

Python 3.12 一元操作符重载实战:5个特殊方法实现自定义数值行为

本文详细介绍了在Python 3.12中如何通过重载`__pos__`、`__neg__`、`__abs__`、`__invert__`和`__round__`这五个特殊方法,实现自定义类的一元操作符支持。通过向量类的实战示例,展示了运算符重载的核心技巧和应用场景,帮助开发者提升代码的可读性和功能性。

weixin_34037173的博客 459

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python数据结构算法题一百六十一:利用函数注解实现方法重载

问题你已经学过怎样使用函数参数注解,那么你可能会想利用它来实现基于类型的方法重载。但是你不确定应该怎样去实现(或者到底行得通不)。

m0_68635815的博客 895

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python运行方式有哪些、各有什么特点-python 重载方法有哪些特点

说起python 的重载主要包括方法重载和运算符重载。1.python 方法重载: 其他的语言一般对于方法重载的话,主要是根据参数的类型不同或者是数量不同来区分同名的方法。而python则比较特殊,它本身是动态语言,方法的参数是没有类型的,当调用传值的时候才确定参数的类型,故对参数类型不同的方法无需考虑重载。对参数数量不同的方法,则(大多数情况下)可以采用参数默认值来实现。比如你可以定义函数的默认...

weixin_39679678的博客 468

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python的函数重载

在许多编程语言中,如C++和Java,函数重载(Function Overloading)是一个常见的功能。它允许开发者定义多个同名但参数不同的函数。然而,Python作为一种动态类型语言,没有内置的函数重载机制。但这并不意味着我们不能实现类似的功能。我们可以通过一些技巧和设计模式来实现类似于函数重载的效果,接下来我们一起来看看Python怎么实现函数重载。我们在Python中常用的重载方式,应该就是以上三种。

GoProLin的博客 1109

python重载模块_Python炫技操作:模块重载的五种方法

作者 | 写代码的明哥来源 | Python编程时光环境准备新建一个 foo 文件夹,其下包含一个 bar.py 文件$ tree foofoo└── bar.py0 directories, 1 filebar.py 的内容非常简单,只写了个 print 语句print("successful to be imported")只要 bar.py 被导入一次,就被执行一次 print禁止重复导入由...

weixin_39638014的博客 131

方法的重载

20、方法重载 重载就是在一个类中,有相同的函数名称,但形参不同的函数。 方法的重载的规则: 方法名称必须相同。 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。 方法的返回类型可以相同也可以不相同。 仅仅返回类型不同不足以成为方法的重载。 实现理论: 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。 package method; public class Demo02 { pu

weixin_54841517的博客 342

python3 - 关于重用、重写、重载

重用 重用是用于在对象的概念中,实现代码的重用性 在继承角度,在子类继承父类之后,重新使用父类属性方法即是代码的重用 在组合角度,在一个类中以另外一个类的对象作为数据属性,提高代码的重用性 重用的方式:    继承:             方式一:指名道姓的应用某一个类中的函数(无关继承,访问函数不存在自动传值)                 例如:CollegePeople._...

LIN的博客 1万+

从`<`比较到`with`语句:手把手教你用Python魔法方法实现操作符重载和上下文管理

本文深入探讨Python魔法方法的应用,从操作符重载(如`__lt__`实现对象比较)到上下文管理(通过`__enter__`/`__exit__`确保资源安全),帮助开发者编写更优雅、高效的Python代码。通过实际案例解析比较逻辑实现、数据库连接管理等场景,并分享性能优化与调试技巧,让自定义类更Pythonic。

weixin_33675507的博客 203

Python笔记:单例实现方法

Python笔记:单例实现方法 0. 引言 1. python类的实例化过程 2. 单例的实现方法 1. 通过装饰器的方式实现 2. 通过重载元类的__call__函数的方式实现 3. 通过重载类的__new__函数的方式实现 4. 总结 3. 参考链接 0. 引言 在python代码的写作中,我们有时需要全局化某一对象,即让这一对象有且只有一个,从而实现共同控制,共享存储空间等功能。 当然,一种简单粗暴的方法就是直接定义变量之后然后将其实例化然后再设置为全局变量,但是这种操作非常野蛮,..

codename_cys的博客 312

Python中实现函数重载的多种方法及最佳实践

对于大多数场景,`functools.singledispatch`提供了最佳的可读性和维护性,而简单场景使用参数默认值即可满足需求。operation: 运算类型('add', 'multiply', 'power')#### 方法四:使用functools.singledispatch实现专业重载。#### 方法二:使用可变参数实现参数数量重载。#### 方法一:使用参数默认值实现简单重载。#### 方法三:使用类型检查实现类型重载。- 复杂多参数场景使用多分派库。#### 方法六:使用类和方法重载。

cVpftXNU的博客 335

Python中巧妙实现函数重载的三种实用方法

这三种方法各有优势:参数默认值适合简单场景,args/kwargs提供最大灵活性,singledispatch则专门处理基于类型的分派。print(process_input({name: Alice, age: 25})) # 处理字典: 键=['name', 'age']print(process_input([1, 2, 3])) # 处理列表: 长度=3, 内容=[1, 2, 3]return f处理列表: 长度={len(data)}, 内容={data}# 基于参数数量处理。

clqvwmpT的博客 433

python中的装饰器、面向对象三大特征、运算符重载

文章目录装饰器简介面向对象的三大特征运算符重载 装饰器简介 在类中对某个方法使用装饰器,该类的对象就可以像调用属性一样去调用该方法,给对应属性增加set和get方法。 实例: class Employee: @property def salary(self): print('salary is ...') emp = Employee() emp.salary ...

九久的博客 311

python类的专有方法

一 介绍 __init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem__: 按照索引获取值 __len__: 获得长度 __cmp__: 比较运算 __call__: 函数调用 __add__: 加运算 __sub__: 减运算 __mul__:

实践求真知 2450
上一篇: 修改Linux终端命令行字体颜色显示
下一篇: Git使用教程
公众号菜鸟童靴
博客等级 码龄9年 90粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值