栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据方向Python培训(持续更新中)

大数据方向Python培训(持续更新中)

文章目录
  • 一.引言
  • 二.为什么要学python,怎么学
    • 1.为什么学
    • 2.怎么学
  • 三.python
    • 1.基础语法
      • (1)hello world!
      • (2)输入输出函数
      • (3)注释和双引号
      • (4)关键字
    • 2.数据类型
    • 3.控制语句与循环
    • 4.序列:字符串,列表,元组
      • 列表
      • 元组
      • 循环
    • 5.映像和集合类型:字典,集合
      • 字典
      • 集合
    • 6.函数
      • (1)函数的定义
      • (2)函数的使用
    • 7.面向对象的编程思想——类和对象
      • (1).面向对象编程介绍
      • (2)类和对象
      • (3).类的构成
      • (4)定义类 和 创建对象
      • (5)对象属性获取
    • 8.文件操作——输入和输出
      • (1)打开文件
      • (2)读文件
      • (3)写文件
      • (4)关闭文件
    • 9.模块,包,库,框架
    • 10.面向对象编程
      • (1)类的创建声明与定义
      • (2)类属性
      • (3)实例化
      • (4)实例属性
      • (5)子类和继承,多重继承

恭喜各位同学进入了下一阶段的培训

一.引言

python是动态语言,是既面向对象又面向过程的语言。

二.为什么要学python,怎么学 1.为什么学 2.怎么学

和c语言有很大不同的是,python拥有很多拿来即用的自带库和拓展库。
比如数据分析会使用到numpy,matplotlib,pandas等
爬虫会用到requests,beautifulsoup4等
连接数据库会用到pymysql,sqllite3等
深度学习和机器学习会用到tensorflow,pytorch,sklearn等

三.python 1.基础语法 (1)hello world!
print("hello world")
(2)输入输出函数
print()
input()
(3)注释和双引号
这是注释
#这是单行注释
'''这是多行注释哦 '''

(4)关键字
关键字含义
False布尔类型的值,表示与 True 相反
NoneNone 比较特殊,表示什么也没有,它有自己的数据类型 - None Type
True布尔类型的值,表示真,与 False相反
and用于表达式运算,逻辑与操作
as用于类型转换
assert断言,用于判断变量或者表示式的值是否为真
break中断循环语句的执行
class用于定义类
continue跳出本次循环,继续执行下一次循环
def用于定义函数或方法
del删除变量或序列的值
elif条件语句,与 if、else 结合使用
else条件语句,与 if、else 结合使用;也可以用于异常或循环语句
exceptexcept 包含捕获异常后的操作代码块,与 try、finally 结合使用
finally用于异常语句,出现异常后,始终要执行 finally 包含的代码块。与 try、except 结合使用
forfor 循环语句
from用于导入模块,与 import 结合使用
global定义全局变量
if条件语句,与 else、elif 结合使用
import用于导入模块,与 from 结合使用
in判断变量是否在序列中
is判断变量是否为某个类的实例
lambda定义匿名函数
nonlocal用于表示外部作用域的变量
not用于表达式运算,逻辑非操作
or用于表达式运算,逻辑或操作
pass空的类、方法或函数的占位符
raise异常抛出操作
return用于从函数返回计算结果
trytry 包含可能会出现异常的语句,与 except、finally 结合使用
whilewhile 循环语句
with简化 Python语句
yield用于从函数一次返回值
2.数据类型

Python3 中有六个标准的数据类型:

  • number(数字)

  • string(字符串)

  • tuple(元组)

  • list(列表)

  • set(集合)

  • dictionary(字典)

3.控制语句与循环
for 循环变量 in 集合:
	操作 
while ……:
	操作	

4.序列:字符串,列表,元组

字符串和c语言大差不差

单引号
''
双引号
""
多引号
""""""
''''''
列表

列表使用[ ]闭合定义,元素可以是任意类型的,可以多种类型混合使用。

list=[1,3.14,"CSDN","列表",2,4,"傻"]
列表常用内置函数
名称作用
list.append()追加
list.count(x)计算列表中参数
list.extend(L)向列表中追加另一个列表L
list.index(x)获得参数x在列表中的位置
list.insert(x,y)向列表中的x位置插入数据 y
list.pop(index)删除列表中下标为index的元素 ( 通 过 下 标 删 除 ) color{#FF0000}{ (通过下标删除) } (通过下标删除)
list.remove(x)删除列表中指定元素x ( 直 接 删 除 ) color{#FF0000}{(直接删除)} (直接删除)
list.reverse()将列表中的元素颠倒顺序
list.sort()将列表中的元素进行排序 貌 似 这 里 的 列 表 元 素 数 据 类 型 必 须 相 同 不 然 报 错 color{#FF0000}{貌似这里的列表元素数据类型必须相同不然报错} 貌似这里的列表元素数据类型必须相同不然报错
下面将展示代码实例:

append

list=[1,3.14,"CSDN","列表",2,4," "]
list.append(1)
print(list)
————————————————————————————————————————————————————————
[1, 3.14, 'CSDN', '列表', 2, 4, ' ', 1]
Process finished with exit code 0

实验证明append只能一次添加一个元素

list=[1,3.14,"CSDN","列表",2,4," "]
list.append(1,2,3)
print(list)
_____________________________________________________________
Traceback (most recent call last):
  File "C:/Users/gedin/PycharmProjects/pythonProject/t1/pratice02.py", line 4, in 
    list.append(1,2)
TypeError: append() takes exactly one argument (2 given)

Process finished with exit code 1

count

list=[1,3.14,"CSDN","列表",2,4," "]
print(list.count(1))
————————————————————————————————————————————————————————————————————————————————
1

Process finished with exit code 0

extend

list=[1,3.14,"CSDN","列表",2,4," "]
list1=['hello']
list.extend([1,2,3]+list1)
print(list)
——————————————————————————————————————————————————————————————————————————————————
[1, 3.14, 'CSDN', '列表', 2, 4, ' ', 1, 2, 3, 'hello']

Process finished with exit code 0
元组

和列表差不多元组用()来定义
但是元组的元素是不能改变的

tuple=(3.14,'中国',3,'hello',5)

因为元组的元素是不可改变的所以内置的方法也少的可怜

常见方法作用
count()查找指定元素在元组里出现的次数
index()查找指定元素第一次在元组里出现的索引值
tuple=(3.14,'中国',3,'hello',5)
print("元素5的下标:"+str(tuple.index(5)))
print("元素5出现的次数:"+str(tuple.count(5)))
————————————————————————————————————————————————————————————————————————————————————————————————————
元素5的下标:4
元素5出现的次数:1

Process finished with exit code 0


循环
python的循环简介优雅功能强大:

Html。。。。。

for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+'*'+str(i)+'='+str(i*j)+' ',end='')
    print()
--------------------------------------------------------------------------------
"D:Program Files (x86)pythonpython.exe" C:/Users/gedin/PycharmProjects/pythonProject/t1/pratice02.py
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

Process finished with exit code 0

for i in range(10):
    print("Hello world!!!")
-----------------------------------------------------------------------------------
"D:Program Files (x86)pythonpython.exe" C:/Users/gedin/PycharmProjects/pythonProject/t1/pratice02.py
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!
Hello world!!!

Process finished with exit code 0

i=1
while i<10:
    print("Hello World!!!")
    i+=1
—-------------------------------------------------------------------------------------
"D:Program Files (x86)pythonpython.exe" C:/Users/gedin/PycharmProjects/pythonProject/t1/pratice02.py
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!
Hello World!!!

Process finished with exit code 0


5.映像和集合类型:字典,集合 字典

字典使用{ }来定义,里面的元素必须为键值对key:value且键的值是不可遍的(数字,字符串,元组)

dict={1:'China',2:'CSDN',3:3.14,4:'hello',5:'哈哈哈'}
常见方法作用
dict.copy()
dict.fromkeys(list,[,])
list=[1,2,3,4,5]
list1=[]
list2=[5,4,3,2,1]
dict1=dict.fromkeys(list,[1,2,3,4])
print(dict1)
dict2=dict.fromkeys(list1)
print(dict2)
dict3=dict.fromkeys(list2,[1,2,3])
print(dict3)
_____________________________________________________________________________
{1: [1, 2, 3, 4], 2: [1, 2, 3, 4], 3: [1, 2, 3, 4], 4: [1, 2, 3, 4], 5: [1, 2, 3, 4]}
{}
{5: [1, 2, 3], 4: [1, 2, 3], 3: [1, 2, 3], 2: [1, 2, 3], 1: [1, 2, 3]}

Process finished with exit code 0
集合

数学中集合的定义

  • 确定性
    给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现 [6] 。
  • 互异性
    一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。有时需要对同一元素出现多次的情形进行刻画,可以使用多重集,其中的元素允许出现多次 [6] 。
  • 无序性
    一个集合中,每个元素的地位都是相同的,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序 [6] 。

创建集合
python set类是在python的sets模块中,大家现在使用的python3.6.x中,不需要导入sets模块可以直接创建集合。

>>>set('boy')
set(['y', 'b', 'o'])

集合添加、删除
python 集合的添加有两种常用方法,分别是add和update。
集合add方法:是把要传入的元素做为一个整个添加到集合中,例如:

>>> a = set('boy')
>>> a.add('python')
>>> a
set(['y', 'python', 'b', 'o'])

集合update方法:是把要传入的元素拆分,做为个体传入到集合中,例如:

>>> a = set('boy')
>>> a.update('python')
>>> a
set(['b', 'h', 'o', 'n', 'p', 't', 'y'])

集合删除操作方法:remove

set(['y', 'python', 'b', 'o'])
>>> a.remove('python')
>>> a
set(['y', 'b', 'o'])

python set() 集合操作符号、数学符号
集合的交集、合集(并集)、差集,了解python集合set与列表list的这些非常好用的功能前,要先了解一些集合操作符号
有关这些数学知识将会再大一下的离散数学中学到

6.函数 (1)函数的定义 (2)函数的使用 7.面向对象的编程思想——类和对象 (1).面向对象编程介绍

·如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。
·对于面向过程的思想: 需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做)
对于面向对象的思想:当需要实现一个功能的时候,看重的并不是过程和步骤,而是关心谁帮我做这件事(偷懒,找人帮我做)
·面向对象的三大特征有: 封装性、继承性、多态性。

生活举例


洗衣服

面向过程(手洗): 脱衣服、找一个盆、加水、加洗衣粉、浸泡30分钟、搓洗、拧衣服、倒掉水、再加水、漂洗、拧衣服、倒掉水、晾衣服。

面向对象(机洗): 脱衣服、放入洗衣机、按下开关、拿出衣服晾晒。

买电脑

面向过程(自己买): 需要电脑、查询参数信息、横向比较机型、了解打折信息、与店家讨价还价、下单、收快递、开机验货、确认收货。

面向对象(找人买): 需要电脑、找秘书帮我买、收电脑。

(2)类和对象
  • `对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

  • 面向对象的语言当中,“类”就是用来模拟现实事物的。

  • 类:抽象的,是一张“手机设计图”。

  • 对象:具体的,是一个“真正的手机实例”。

  • 小结: 类是抽象的,在使用的时候通常会找到这个类的一个具体的存在,使用这个具体的存在。一个类可以找到多个对象。

    这一部分不是短时间内就可以完全理解的,需要在实际操作中慢慢体会

人以类聚 物以群分。
具有相似内部状态和运动规律的实体的集合(或统称为抽象)。
具有相同属性和行为事物的统称

  • 类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象 类是一类事物,对象即是这类事物实现
  • 类中也有属性、行为两个组成部分,而“对象”是类的具体实例
  • 属性: 事物的特征描述信息,用于描述某个特征“是什么”。
  • 行为: 事物的能力行动方案,用于说明事物“能做什么”。
(3).类的构成

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对进行操作的方法 (行为)

案例:如下植物大战僵尸可以抽象为几个类

向日葵
类名: xrk
属性: 颜色
行为: 放阳光 死亡

豌豆
类名: wd
属性: 颜色 、发型,血量
行为:发炮, 摇头 死亡

坚果:
类名:jg
属性:血量 类型
行为:阻挡;死亡

僵尸: 类名:js
属性:颜色、血量、 类型、速度
行为:走 跑跳 吃 死亡

(4)定义类 和 创建对象
  • 定义一个类,格式如下:
class 类名:
    方法列表
  • demo:定义一个Hero类
# class Hero:  # 经典类(旧式类)定义形式
# class Hero():

class Hero(object):  # 新式类定义形式
    def info(self):
        print("英雄各有见,何必问出处。")
  • 说明:
  • ①定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,前两行注释部分则为经典类;
  • ②object 是Python 里所有类的最顶级父类;
  • ③类名 的命名规则按照"大驼峰命名法";
  • ④info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量这个变量指向了实例对象

python中,可以根据已经定义的类去创建出一个或多个对象。
创建对象的格式为:

对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()

创建对象demo:

class Hero(object):  # 新式类定义形式
    """info 是一个实例方法,类对象可以调用实例方法,实例方法的第一个参数一定是self"""
    def info(self):
        """当对象调用实例方法时,Python会自动将对象本身的引用做为参数,
            传递到实例方法的第一个参数self里"""
        print(self) 
        print("self各不同,对象是出处。")


# Hero这个类 实例化了一个对象  taidamier(泰达米尔)
taidamier = Hero()

# 对象调用实例方法info(),执行info()里的代码
# . 表示选择属性或者方法
taidamier.info()

print(taidamier)  # 打印对象,则默认打印对象在内存的地址,结果等同于info里的print(self)
print(id(taidamier))  # id(taidamier) 则是内存地址的十进制形式表示
<__main__.Hero object at 0x036EB0D0>
self各不同,对象是出处。
<__main__.Hero object at 0x036EB0D0>
57585872

小结:当创建一个对象时,就是用一个模子,来制造一个实物

(5)对象属性获取

对象既然有实例方法,是否也可以有自己的属性?

添加和获取对象的属性

class Hero(object):
    """定义了一个英雄类,可以移动和攻击"""
    def move(self):
        """实例方法"""
        print("正在前往事发地点...")

    def attack(self):
        """实例方法"""
        print("发出了一招强力的普通攻击...")


# 实例化了一个英雄对象 泰达米尔
taidamier = Hero()

# 给对象添加属性,以及对应的属性值
taidamier.name = "泰达米尔"  # 姓名
taidamier.hp = 2600  # 生命值
taidamier.atk = 450  # 攻击力
taidamier.armor = 200  # 护甲值

# 通过.成员选择运算符,获取对象的属性值
print("英雄 %s 的生命值 :%d" % (taidamier.name, taidamier.hp))
print("英雄 %s 的攻击力 :%d" % (taidamier.name, taidamier.atk))
print("英雄 %s 的护甲值 :%d" % (taidamier.name, taidamier.armor))

# 通过.成员选择运算符,获取对象的实例方法
taidamier.move()
taidamier.attack()

英雄 泰达米尔 的生命值 :2600
英雄 泰达米尔 的攻击力 :450
英雄 泰达米尔 的护甲值 :200
正在前往事发地点...
发出了一招强力的普通攻击...

对象创建并添加属性后,能否在类的实例方法里获取这些属性呢?如果可以的话,应该通过什么方式?

在方法内通过self获取对象属性
class Hero(object):
    """定义了一个英雄类,可以移动和攻击"""
    def move(self):
        """实例方法"""
        print("正在前往事发地点...")

    def attack(self):
        """实例方法"""
        print("发出了一招强力的普通攻击...")

    def info(self):
        """在类的实例方法中,通过self获取该对象的属性"""
        print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
        print("英雄 %s 的攻击力 :%d" % (self.name, self.atk))
        print("英雄 %s 的护甲值 :%d" % (self.name, self.armor))


# 实例化了一个英雄对象 泰达米尔
taidamier = Hero()

# 给对象添加属性,以及对应的属性值
taidamier.name = "泰达米尔"  # 姓名
taidamier.hp = 2600  # 生命值
taidamier.atk = 450  # 攻击力
taidamier.armor = 200  # 护甲值

# 通过.成员选择运算符,获取对象的实例方法
taidamier.info()  # 只需要调用实例方法info(),即可获取英雄的属性
taidamier.move()
taidamier.attack()
英雄 泰达米尔 的生命值 :2600
英雄 泰达米尔 的攻击力 :450
英雄 泰达米尔 的护甲值 :200
正在前往事发地点...
发出了一招强力的普通攻击...
8.文件操作——输入和输出 (1)打开文件

在python中使用open函数即可打开文件

f = open(‘test.txt’,’w’)

访问模式

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
wb+以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。
(2)读文件

使用write()可以完后向文件写入数据
示例

#写
f = open("test.txt","w") #打开文件,w模式(写模式),文件不存在就新建
f.write("hello world,I am here!")   #将字符串写入文件中
f.close()   #关闭文件
(3)写文件 (4)关闭文件
#新建一个文件,文件名为:test.txt
f = open(“text.txt”,”w”)
f.colse()#关闭这个文件
9.模块,包,库,框架

(1)模块:是一个单独的.py文件,用于存放一些功能相关的代码,可以是代码更加容易维护,提高代码的重用价值

(2)包:是一个有层级的目录结构,包含n个模块或者n个子包,包中一定要有__init__.py文件

(3)库:是完成一定功能的代码集合,表现形式是一个模块,或包

(4)框架:是一个架构层面的概念,为解决一个开放性问题而设计的具有一定约束性的支撑结构,通过框架可以快速实现一个解决问题的骨架,后面按照框架中的角色去填充和交互,就可以完成质量高,维护性强的项目

(5)包和模块的作用:1.有效的对程序进行分解,方便代码的管理和维护,如造一辆车,就得先造好轮子、发动机和壳等小的零件,再将这些小零件组合,就可以做成车,同样,拿模块和包过来就可以则合成大的程序;2.避免同一模块中命名重复问题

关于包和模块的分类

(1)标准包和模块:安装python后自动下载在电脑中的包和模块,可以直接导入使用,满足用户基本的需求;其中有一些特殊的包和模块–内建包和模块,如builtins模块,其中包含了很多如print这样的常用的方法,所以内建包和模块不需要导入就可以直接使用

(2)三方包和模块:别的程序员开发的包和模块,需要用户手动去相关网站上下载安装,然后进行导入使用

(3)自定义包和模块:用户自己写的一些好的包和模块

关于包和模块的信息

(1)包和模块名:包名是包的名称,模块名是.py文件的名称

(2)包和模块位置:可以通过“print(模块.file)”来查看包和模块的位置信息

(3)包和模块中的内容:可以通过“print(dir(模块))”来查看列出的包和模块中的内容

关于python不同版本之间不兼容的问题

(1)不兼容对象:包和模块

(2)不兼容原因:包和模块中存在一些类,函数和属性等,如果有两个版本,1.f前者有一个名为a的函数,而后者没有;2两者都有名为b的函数,但前者只传一个参数,后者要传两个参数;3.前者本来没有名为c的函数,但后者却有。这些情况都将导致两个版本的python不兼容

关于包和模块的导入(重点)

(1)作用:可以使用包和模块中的好的模块和方法等工具

(2)包的导入方式

常规导入:方式1.import M;方式2.import M1,M2;方式3.import M as 别名。如果导入的是一个包中的模块,则需要使用“.”语法,如import 包.模块

注意:使用导入的模块中的内容时,要使用“.”语法,如M.run(),即使用导入的M模块中的run()方法

补充:直接导入一个包,则不会导入任何包中的模块,但是会执行包中的__init__.py文件的内容,这里的解决方法是1.再在__init__.py文件中对需要的模块进行导入(使用绝对路径);2.使用from 包 import 模块的形式进行导入

from A import B:使用此方式导入模块时,B一定只能写一个模块名,不能带有“.”语法,而A可以是一个包,也可以是包中的子包,可以使用“.”语法,如from 包.子包 import 模块。这里需要注意的是python中的一种面向关系,即包中只能看到模块,不能看到模块中的资源,而模块只能看见其中的资源,不能看见别的东西

from A import *(重点):这种导入方式如果是将模块中的所用资源导入过来使用,那么这里的A只能是模块;如果A是包,则是将该包中所有的模块都导入进来。需要注意的是,这里有两种特殊情况,1.在A模块中使用__all__=[“a”,“b()”]属性时,则使用from A import *进行导入后就只能使用列表中写的属性和方法,如果没有写__all__=[“a”,“b()”]属性,则默认可以使用A中所有的资源;2.如果A中存在受保护的或者私有的资源,则必须使用__all__=["_a","__b()"]属性进行说明,否则直接使用from A import *进行导入后,仍然无法使用这些资源
————————————————
版权声明:本文为CSDN博主「醍醐三叶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zx870121209/article/details/81515649

10.面向对象编程 (1)类的创建声明与定义 (2)类属性 (3)实例化 (4)实例属性 (5)子类和继承,多重继承
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号