Python面向对象编程

python面向对象编程(基础篇) 当然不是,在son的构造方法中,我首先调用的是父亲的构造方法这时候son有了父亲的两个属性,之后又调用了母亲的构造方法,这时候由于母亲的eye属性和父亲的重复了,就像我们首先定义a=1之后我们又定义了a=2那么最终a的值一定是2。char a[]来定义单个字符的数组(字符串),a[][]来定义字符串的集合,但是在定义某些数据类型时,我们发现例如学生,他不止有字符串类型的姓名、性别,更有整数类型的学号、年龄等,甚至还有data类型的出生日期,离返校时间。注意在方法中我们要固定的传入一个self,这是规则。 阅读详情

Python面向对象编程

面向对象的世界

代码通常称为类的方法,数据通常称为类的属性,实例化的对象称为实例

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):
        return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
        
    def sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)

程序分析:定义运动员类,使得各个具体的运动员的代码有了共同的模板,在实例化的过程中可以使得代码变量更少,有更好的可读性

如何定义类
class Athlete:

第一部分:class定义类的关键字,Athlete符合python标识符命名规则,:表示类内容的开始
def init(self,a_name,a_dob=None,a_times=[]):

第二部分:def定义函数的关键字,init 方法是一个特殊方法会在实例化对象时自动调用,我们会在这个方法中对数据进行赋值。self作为类中函数的第一个参数,方便该方法调用该类的其他属性和方法。

def get_coach_data(filename):
    with open(filename) as f:
        line = f.readline()
    return line.strip().split(',')

# 从文件中读取数据
james_new = get_coach_data('mywork/james_new.txt')
james_name = james_new.pop(0)
james_dob = james_new.pop(0)
james_times = james_new

# 创建Athlete对象
james = Athlete(james_name,james_dob,james_times)

print('姓名:%s,生日:%s,最快的3次成绩:%s' %(james.name,james.dob,james.top3()))

姓名:james,生日:2006-11-11,最快的3次成绩:[‘2.01’, ‘2.22’, ‘2.34’]
如何使用类
1.创建对象

对象名 = 类名(参数)

2.使用.调用类的方法和属性

对象.属性名

对象.方法名()

类属性
所有对象共享的数据

class Athlete:

    #运动员集训了,要买东西的同学要把地址改一下
    address = '中国足球协会训练基地xx街xx号'

    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):
        return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
        
    def sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)
julie_new = get_coach_data('mywork/julie_new.txt')
julie_name = julie_new.pop(0)
julie_dob = julie_new.pop(0)
julie_times = julie_new

james_new = get_coach_data('mywork/james_new.txt')
james_name = james_new.pop(0)
james_dob = james_new.pop(0)
james_times = james_new

julie = Athlete(julie_name,julie_dob,julie_times)
james = Athlete(james_name,james_dob,james_times)

print(julie.address)
print(james.address)
print(Athlete.address)

中国足球协会训练基地xx街xx号
中国足球协会训练基地xx街xx号
中国足球协会训练基地xx街xx号

如何使用:
定义:

在 init 之上,或者说在类的范围内与方法同等级别,书写变量名=值

调用:

类名.类属性

类方法¶
所有对象共享的方法

class Athlete:

    #运动员集训了,要买东西的同学要把地址改一下
    address = '中国足球协会训练基地xx街xx号'

    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):
        return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
        
    def sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)
    @classmethod
    def changeAddress(self):
        self.address = '中国田径训练基地xx街xx号'
#集训队换地方了
Athlete.changeAddress()
print(julie.address)
print(james.address)
print(Athlete.address)

中国足球协会训练基地xx街xx号
中国足球协会训练基地xx街xx号
中国田径训练基地xx街xx号

如何使用:
定义:

方法定义时,使用@classmethod标记

调用:

类名.类方法

对象.类方法

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):
        return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
        
    def sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)
james = Athlete(james_name,james_dob,james_times)
james.name = 'hehe'
# james.sanitize()
print('姓名:%s,生日:%s,最快的3次成绩:%s' %(james.name,james.dob,james.top3()))

姓名:hehe,生日:2006-11-11,最快的3次成绩:[‘2.01’, ‘2.22’, ‘2.34’]
sanitize()函数,直接调用的话,不知道有什么用呢?

sanitize()函数是在Athlete中,专门用来处理将训练的时间进行标准化的,干脆把它声明为私用的,不会用的话干脆让你看不到就行了。

james.name = 'hehe’你不可以这样啊,怎么可以直接改呢! 干脆不让你改

class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.__name = a_name
        self.dob = a_dob
        self.times = a_times
       
    def sayName(self):
        print(self.__name)
        
    def top3(self):
        return sorted(set([self.__sanitize(t) for t in self.times]))[0:3]
        
    def __sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)
james = Athlete(james_name,james_dob,james_times)
# print(james._name)
# james.__sanitize()
print('姓名:%s,生日:%s,最快的3次成绩:%s' %(james.name,james.dob,james.top3()))

AttributeError Traceback (most recent call last)
in
2 # print(james._name)
3 # james.__sanitize()
----> 4 print(‘姓名:%s,生日:%s,最快的3次成绩:%s’ %(james.name,james.dob,james.top3()))

AttributeError: ‘Athlete’ object has no attribute ‘name’

私用的属性和方法的定义:

在属性和方法名前加 __ 两个下划线

练习

第一题(30分)

数据如下:
stu1.txt 孙同学,2020-5-21,20,‘男’,77,56,77,76,92,58,-91,84,69,-91
stu2.txt 赵同学,2020-11-3,24,‘女’,65,68,72,95,-81,71,86,91,57,91
stu3.txt 王同学,2021-8-7,25,‘男’,87,78,90,-76,88,47,100,65,69,100
stu4.txt 李同学,2021-8-10,29,‘男’,92,54,85,71,-91,68,77,68,95,95

以上四个txt文档在work路径下可以找到。

定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于存储所有的学生对象。最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。

第一题的输出结果如下,供参考:
程序输出

# 请在此处完成代码
def get_data(filename):
    with open(filename) as fr:
        line = fr.readline()
    return line.strip().split(',')

class Student:
    def __init__(self,a_name,a_dob,a_age,a_gender,a_score=[]):
        self.name = a_name
        self.dob = a_dob
        self.age = a_age
        self.gender = a_gender
        self.score = a_score

    def sanitize(self,score_string):
        score_string = int(score_string)
        if score_string < 0:
            score_string = abs(score_string)
        return score_string

    def top3(self):
        return sorted([self.sanitize(t) for t in self.score],reverse=True)[0:3]

stu_list = [0 for i in range(4)]
filename = ['./work/stu1.txt','./work/stu2.txt','./work/stu3.txt','./work/stu4.txt']
for i in range(4):
    data = get_data(filename[i])
    #print(data)
    name = data.pop(0)
    dob = data.pop(0)
    age = data.pop(0)
    gender = data.pop(0)
    score = data
    stu_list[i] = Student(name,dob,age,gender,score)
    print('姓名:%s 生日:%s 年龄:%s 性别:%s 分数:%s'
    %(stu_list[i].name,stu_list[i].dob,stu_list[i].age,stu_list[i].gender,stu_list[i].top3()))

姓名:孙同学 生日:2020-5-21 年龄:20 性别:‘男’ 分数:[92, 91, 91]
姓名:赵同学 生日:2020-11-3 年龄:24 性别:‘女’ 分数:[95, 91, 91]
姓名:王同学 生日:2021-8-7 年龄:25 性别:‘男’ 分数:[100, 100, 90]
姓名:李同学 生日:2021-8-10 年龄:29 性别:‘男’ 分数:[95, 95, 92]

第二题(30分)
数据格式如下:
stu5.txt 特长同学,2020-10-5,20,‘男’,180,87,98,77,76,92,58,-76,84,69,-47
stu6.txt 特长同学,2020-10-6,20,‘女’,230,76,48,82,88,92,58,-91,84,69,-68

以上两个txt文档在work路径下可以找到。

定义Spostudent、Artstudent为Student的子类,在子类的属性里面新增了spe为特长分数。Spostudent包括的top3方法返回的是最低的3个得分(可重复),Artstudent包括top3方法返回的是最高的3个得分(可重复),最后使用多态的方式输出2个特长同学的姓名、生日、年龄、性别、分数、特长分。

第二题的输出结果如下,供参考:

程序输出

# 请在此处完成代码
class Spostudent(Student):
    def __init__(self,a_name,a_dob,a_age,a_gender,a_spe,a_score=[]):
        Student.__init__(self,a_name,a_dob,a_age,a_gender,a_score)
        self.spe = a_spe

    def top3(self):
        return sorted([self.sanitize(t) for t in self.score])[0:3]

class Artstudent(Student):
    def __init__(self,a_name,a_dob,a_age,a_gender,a_spe,a_score=[]):
      Student.__init__(self,a_name,a_dob,a_age,a_gender,a_score)
      self.spe = a_spe
    def top3(self):
        return sorted([self.sanitize(t) for t in self.score],reverse=True)[0:3]

def print_stu_info(student):
    print('姓名:%s 生日:%s 年龄:%s 性别:%s 分数:%s 特长分:%s'
    %(student.name,student.dob,student.age,student.gender,student.top3(),student.spe))
  
stu5 = get_data('./work/stu5.txt')
spostu = Spostudent(stu5.pop(0),stu5.pop(0),stu5.pop(0),stu5.pop(0),stu5.pop(0),stu5)
stu6 = get_data('./work/stu6.txt')
artstu = Artstudent(stu6.pop(0),stu6.pop(0),stu6.pop(0),stu6.pop(0),stu6.pop(0),stu6)
print_stu_info(spostu)
print_stu_info(artstu)

姓名:特长同学 生日:2020-10-5 年龄:20 性别:‘男’ 分数:[56, 58, 69] 特长分:180
姓名:特长同学 生日:2020-10-6 年龄:20 性别:‘女’ 分数:[92, 91, 91] 特长分:230

Python14 面向对象编程 Python的面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。这些对象由数据和能够操作这些数据的方法组成。面向对象编程的主要目标是提高软件的可重用性、可维护性和灵活性。类(Class)类是创建对象的模板或蓝图。它定义了一组属性(称为字段或变量),以及操作这些数据的方法。一个类可以包括基本的数据属性(静态的信息片段),以及能够对数据执行特定功能的方法。对象(Object)对象是类的实例。 阅读详情

相关推荐

写一个类Student,包含三个属性学号id,姓名name和年龄age;要求覆盖基类Object中的ToString()方法和Equals()方法,使得直接输出Student对象时输出的是对象的id,name和age信息;并且当两个对象的学号相同时认为它们相等;

写一个类Student,包含三个属性学号id,姓名name和年龄age;要求覆盖基类Object中的ToString()方法和Equals()方法,使得直接输出Student对象时输出的是对象的id,name和age信息;并且当两个对象的学号相同时认为它们相等; 然后写一个主方法测试以上定义。

python的类的题目_python3 class类 练习题1

"""一、定义一个学生student类。有下面的类属性:1 姓名 name2 年龄 age3 成绩 score(语文,数学,英语) [每课成绩的类型为整数]类方法:1 获取学生的姓名:get_name() 返回类型:str2 获取学生的年龄:get_age() 返回类型:int3 返回3门科目中最高的分数。get_course() 返回类型:int写好类以后,可以定义2个同学测试下:zm = st...

weixin_39946300的博客 2965

设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)

1.设计一个学生类Student。 1)数据成员包括: 学生学号、姓名、数学、英语、c语言成绩;(用字符指针存储学号和姓名,通过动态存储空间分配的方式为指针开辟指向的空间,保证空间大小没有浪费) 2)成员函数包括: 设置学生每门课成绩的函数 setScore();计算三门课程平均成绩的函数average();分别用来设置和获取学生各个属性值的set()和get()成员函数(例如:设置数学成绩的成员函数setMath().返回数学成绩的成员函数 getMath());计算三门课程总成绩的函数sum();显示学生数据信息的函数print();(注意:以上成员函数均为提示名称,是否需要参数请同学们根据实际情况酌情添加) 3)在该类中定义无参构造函数、带参构造函数、拷贝构造函数和析构函数。(注意构造函数中资源的分配以及析构函数中资源的释放) 4)编写主函数,分别练习对象、对象指针、对象数组、对象引用的使用;借助构造与析构函数测试并验证不同对象的生存周期; 5)熟悉this指针,测试什么样的成员函数有this指针,什么样的成员函数没有this指针。 6)借助student类验证常对象、常成员以及

编写学生类(Student),包含了姓名(name),年龄(age),手机号码(phoneNumber)等三个属性

【代码】编写学生类(Student),包含了姓名(name),年龄(age),手机号码(phoneNumber)等三个属性。

wgq2020的博客 2366

【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结

文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ...

xiaosha_的博客 6892

WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)

   在进行自己的WRF项目模拟的时候,因为需要用中国土地利用数据替换WRF内嵌老旧的土地利用数据,故需要将土地利用进行替换。我使用的中国的土地利用数据是来自中国土地利用数据(1980-2015)。其中我以下载的lucc1980为例进行演示。 1、坐标转换    (1)下载的lucc1980数据如下图所示:    (2)在ArcMap中打开如下图所示: 打开属性表可以看到,lucc1980的坐标系为投影坐标系Krasovsky_1940_Albers,数据格式为GRID。这里需要将投影坐标系转换成地理坐

GIS 1万+

【无标题】

第九周实验

XAX520_1314的博客 1902

从病毒分析到安全研究:手把手教你用OD破解加壳程序的反调试机制

本文深入探讨了如何识别并绕过加壳程序的反调试机制,特别是针对使用IsDebuggerPresent等API检测的防护手段。通过实战案例和工具链配置,详细介绍了逆向工程中的关键技巧,包括内存补丁、硬件断点定位OEP等,帮助安全研究人员有效突破软件保护技术。

tgb345678的博客 824

【Python基础】Python面向对象编程

​ Python面向对象编程(简称OOP)是Python语言中最重要的特性之一。它是一种通过“对象”来设计软件的方法。它通过将数据和操作数据的方法封装在对象中,使得程序更加模块化、可重用和易于维护。它遵循一切皆对象的理念,可以将现实世界的事物使用类与实例进行模拟。​ 对于初学者来说,理解面向对象编程的基本原理和Python中的实现方式是非常有帮助的。本文旨在为初学者提供一个易于理解的Python面向对象编程介绍,并探讨其在实际编程中的应用和优势。什么是Python?

分享是一种境界,勤于分享,乐于分享! 2121

【FnOS飞牛云 | NAS存储】旧电脑不吃灰,手把手教你搭建完全属于自己的私人网盘

打造属于自己的NAS私人网盘,亲测有效,值得一试

木子Linux的博客世界 9419

MSP430项目设计:2020年TI杯大学生电子设计竞赛 坡道行驶电动小车(C题)循迹小车(分享项目展示视频与源码)

文章目录题目要求一、硬件设计二、理论分析与计算三、电路与程序设计四、测试方案与测试结果五、项目展示 哔哩哔哩项目展示视频:https://www.bilibili.com/video/BV1oz4y1d7mH/ 百度网盘资料链接:https://pan.baidu.com/s/1PC-lkSORH_XCgIG-u3HCog 提取码:c7zz 取走记得点赞啊! 题目要求 1.任务 利用TI的MSP430/MSP432平台,设计制作一个四轮电动小车。要求小车能沿着指定路线在坡道上自动循迹骑线行驶。小车必须独立

mbs706的博客 4万+

Python 面向对象编程

在Python中,类(Class)是面向对象编程(Object-Oriented Programming, OOP)的基础概念。类是创建对象(Object)的蓝图,它定义了对象的属性和方法。每个对象都是类的一个实例,具有类定义的属性和行为。类是一种用户自定义的数据结构,它包含了一组属性(成员变量)和行为(成员方法)。在Python中,可以使用class关键字来定义一个类,并使用def关键字来定义类的成员方法。使用class关键字定义一个类,类名作为该类的标识符。

2201_75479454的博客 2567

核心面试聚焦:业务问题+系统问题+设计题---字节、阿里、美团等整理统计

业务系统及其他相关面试问题整理:线上相关问题排查+高并发系统的限流+高并发秒杀系统设计+负载均衡+一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出?

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

python 面向对象编程

带你走进 python 面向对象编程的世界

不能再留遗憾了的博客 4612

基于ResNet + LLM大语言模型的分类识别系统设计与实现,Web前后端分离,Django+vue3+AI助手模块+ResNet50算法+LLM 联动+Element Plus等技术,全网独发

分类识别任务是计算机视觉中的重要任务,广泛应用于智慧校园分类、智慧农业、智慧生活场景分类等领域。常见的分类模型有 VGGNet、ResNet 、MobileNet 、ConvNeXt、DenseNet、ViT、Swin Transformer、YOLOv8/11/26。本项目结合 ResNet分类识别算法 + LLM大语言模型联动 ,使用 Django + Vue3,构建了一个通用的 Web 前后端系统,用户端 + 管理端 ,便于用户操作检,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 760

一文带你了解什么是RDMA

RDMA(Remote Direct Memory Access,远程直接内存访问)是一种起源于高性能计算领域的通信技术,如今已广泛应用于数据中心。该技术使得用户程序能够绕过操作系统内核及CPU,直接与网络接口卡(NIC)交互,实现网络通信。这种方式不仅大幅提升了通信带宽,还显著降低了网络延迟,优化了整体性能。

嵌入式技术开发 6016

【Python】系列之面向对象编程

对象(class)是一种抽象的概念,上面定义的对象Person,指的就是学生这个概念,而实例(instance)则指一个个具体的对象,例如上面的张三丰和l张无忌就是两个具体的Person,也就是实例从上面的案例可以看出,面向对象的程序设计思想其实就是抽象出对象(class),然后根据对象创建实例(instance)最后,面向对象的抽象程度比函数高,因为一个对象既包含数据,也包含操作数据的方法,封装、继承、多态是面向对象的三大特点。

康师傅没有眼泪 6512

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python学习-面向对象编程

在 Python 中,可以使用class关键字来定义类。以下是一个简单的类定义示例:​在上面的示例中,我们定义了一个名为Person的类,它有两个属性name和age,以及一个方法say_hello。面向对象编程是一种强大的编程范式,它可以提高代码的可维护性、可扩展性和可复用性。Python 提供了丰富的面向对象编程特性,使得开发者可以更加方便地进行面向对象编程。在实际开发中,可以根据具体需求选择合适的面向对象编程特性,以提高代码的质量和效率。

wu73guang5jian的博客 1634

假人有限元模型

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【python】python进阶——面向对象编程

Python 从设计之初就是一门面向对象的语言,它的核心机制建立在“一切皆对象”的基础上,但它也优雅地支持函数式、过程式等多种编程范式,是一门真正的多范式语言。

weixin_51924657的博客 1939

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python语言的面向对象编程

在Python中,可以使用class关键字定义一个类。如下所示:```pythonclass Dog:definitself.name = name # 属性self.age = age # 属性def bark(self): # 方法")```pythonprint(my_dog.name) # 输出:Buddymy_dog.bark() # 输出:Buddy says woof!首先,我们定义一个Book类,用于表示书籍的信息。

dasinigeguisun01的博客 1373

Python中面向对象编程思想

本文旨在深入探讨Python中的面向对象编程(OOP)概念,包括其核心思想、实现方式以及最佳实践。我们将从OOP的基础知识入手,逐步深入到更高级的特性,如继承、多态和封装,并探讨如何在实际编程中应用这些概念。面向对象编程(OOP)是一种以对象为核心的编程范式,它通过类和对象的概念来设计软件,提高了代码的可读性和可维护性。OOP的核心在于封装,它将数据和相关操作封装在一起,隐藏内部实现细节,仅对外暴露必要的接口。继承允许新类继承现有类的属性和方法,从而扩展或覆盖原有功能。

Wayne_zzx1112233的博客 910
下一篇: Github访问速度慢,试试这样做
淬子
博客等级 码龄6年 27粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淬子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值