| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 第五章 python标准 -> 正文阅读 |
|
[Python知识库]第五章 python标准 |
# Sys模块定义Sys模块主要负责与python解释器进行交互
代码
注:在cmd里面运行python,语法:python?文件名字?参数1?参数2 多个参数之间用空格隔开
# Os模块定义os是和操作系统(windows)进行交互的,提供了访问操作系统底层的接口 Sys模块主要负责与python解释器进行交互 常用方法
代码
#?文件模式匹配:glob模块
语法#glob.glob()?进行模式匹配,返回一个迭代对象 优点1.打印的是全路径 2.可以进行模式匹配 #日期时间相关 Datetime?模块定义日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块 Datetime模块常用的三个类?date??time??datetime 一个文件是一个模块,一个模块里面有多个类,一个类有多个方法 ## Date定义定义:class?datetime.date(year,?month,?day) 常用的方法和属性
## Time定义class?datetime.time(hour,?minute,?second,?[microsecond[,?tzinfo]]]])常用的方法和属性
## Datetime定义class?datetime.datetime(year,?month,?day,?hour=0,?minute=0,?second=0,?microsecond=0,?tzinfo=None) date和time类的一个结合 常用方法和属性
常用方法代码
## Timedeltal定义class?datetime.timedelta(days=0,?seconds=0,?microseconds=0,?milliseconds=0,?hours=0,?weeks=0) timedelta对象表示两个不同时间之间的差值。可以对datetime.date,?datetime.time和datetime.datetime对象做算术运算。 常用的方法
# 正则## 元字符
## 转义字符\
## 预定义匹配字符
重复匹配
位置匹配
# 贪婪模式/非贪婪模式“贪婪模式”总是尝试匹配尽可能多的字符; “非贪婪模式”则相反,总是匹配尽可能少的字符
# re模块定义Python编译正则的模块 常用方法
# Match对象的方法
补充为什么正则前面要带一个r 如果你想要\,只是一个斜杠,没有特殊意义,我们正则前面要加r # pprint模块定义pprint模块包含一个“美观打印器(PrettyPrinter)”,用于产生美观的数据结构视图。格式化程序生成可以由解释器正确解析的数据结构,并且容易使人阅读 ## Printing使用 pprint 模块的最简单方法是调用 pprint() 方法: 定义pprint模块包含一个“美观打印器(PrettyPrinter)”,用于产生美观的数据结构视图。格式化程序生成可以由解释器正确解析的数据结构,并且容易使人阅读
代码
# Formatting定义格式化数据结构 补充:日志的讲解
# pickle模块定义pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。 序列化方法
## dumps()与loads()
## dump()与load()
# 文件的操作## 创建/打开文件语法变量名 = open(文件名,打开模式) ## 打开模式
代码
## 关闭文件
## 读文件常用方法
代码注意:如果文件是中文,打开之后报错。就按照一下步骤修改 文件--->首选项--->设置--->搜索encoding---->simplified chiese (GBK)
## 写文件常用方法
代码
## 删除文件
## with语句语法? :with open(文件名) as 别名代码
# json模块定义Json**是一种轻量级的数据交换格式**。Json源自JavaScript语言,易于人类的阅读和编写,同时也易于机器解析和生成,是目前应用最广泛的数据交换格式。
## JSON类型转换Python类型对照表
常用方法
## dumps()与loads()
## dump()与load()
# Python与数据库创建?updata------------>dml (数据操作语言) insert------------>dml (数据操作语言) delete------------>dml (数据操作语言) select------------>dql (数据查询语言) ## 创建数据表语法:?CREATE TABLE IF NOT EXISTS table_name (column_namecolumn_type);数据类型
## 约束主键自增(int) :primary key auto_increment ## 外键CONSTRAINT <约束名> ## 唯一约束<字段名> <数据类型> UNIQUE ## 非空约束not null## 默认约束<字段名> <数据类型> DEFAULT <默认值> ## 切换数据库#使用/切换这个数据库: use 数据库名字;# 增(添加数据)insert into 表名(列名1,列名2) values(值1,值2)# 删delete from 表名 where 表达式 ?#删除单个语句 # 改更新数据update 表名 set 列名=值 [where 表达式] alter? # 查select 要查询的列名1,列名2 from 表名1,表2? # python与数据库# 1.安装pymsqlpip install pymysql列出软件包清单
|
方法 | 功能 |
---|---|
execute(query, args) | 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数; |
executemany(query, args) | 执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 |
区别是:批量添加的时候executemany比较快
# 要执行的SQL语句,确保数据表中有相应的数据
sql = "select * from exam;"
# 使用游标对象执行SQL语句;
cursor.execute(sql)
方法 | 功能 |
---|---|
fetchone() | 返回一条结果行 |
fetchmany(size) | 接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据 |
fetchall() | 接收全部的返回结果行 |
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
#运行不报错就是可以了
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
# 要执行的SQL语句,确保数据表中有相应的数据
sql = "select * from exam;"
# 使用游标对象执行SQL语句;
cursor.execute(sql)
# 使用fetchone()方法,获取返回的结果,但是需要用变量保存返回结果;
#data = cursor.fetchone() #(1, '张三', 60) 单条数据
#多条数据
#data = cursor.fetchall() #((1, '张三', 60), (2, '李四', 60), (3, '王五', 80))
#两条数据
data = cursor.fetchmany(2) #((1, '张三', 60), (2, '李四', 60))
print(data)
# 断开数据库的连接,释放资源;
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
#运行不报错就是可以了
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
#创建表,字段是id,姓名,年龄,性别
sql = """
CREATE TABLE ceshi(
id int,
name varchar(10),
age int,
sex char(10)
)
"""
# 使用游标对象执行SQL语句;
cursor.execute(sql)
# 断开数据库的连接,释放资源;
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
#运行不报错就是可以了
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
#插入数据
sql = """
insert into ceshi(id, name, age, sex)
values(%s,%s,%s,%s)
"""
try:
# 使用游标对象执行SQL语句;
cursor.execute(sql,(2,"翠花",19,"男"))
db.commit()
except Exception as ex:
print('插入语句错误' + str(ex))
db.rollback()
finally:
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
#运行不报错就是可以了
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
#插入数据
sql = """
insert into ceshi(id, name, age, sex)
values(%s,%s,%s,%s)
"""
data = [
(3,"王五",19,"男"),
(4,"李四",19,"男"),
(5,"赵六",19,"男")
]
try:
# 使用游标对象执行SQL语句;
cursor.executemany(sql,data)
db.commit()
except Exception as ex:
print('插入语句错误' + str(ex))
db.rollback()
finally:
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
# 要执行的SQL语句,确保数据表中有相应的数据
sql = "select * from ceshi;"
# 使用游标对象执行SQL语句;
cursor.execute(sql)
#多条数据
data = cursor.fetchall()
print(data)
# 断开数据库的连接,释放资源;
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
# 要执行的SQL语句,确保数据表中有相应的数据
sql = "update ceshi set age=%s, sex=%s where id=%s;"
try:
# 使用游标对象执行SQL语句;
cursor.execute(sql,(50,"女",3))
db.commit()
except Exception as ex:
print('插入语句错误' + str(ex))
db.rollback()
finally:
db.close()
import pymysql
db=pymysql.connect(host='localhost',
user='root',
password='123456',
port=3306,
db='temp',
charset='utf8')
# 开启mysql的游标功能,创建一个游标对象;
cursor = db.cursor()
# 要执行的SQL语句,确保数据表中有相应的数据
sql = 'delete from ceshi where id=%s'
try:
cursor.execute(sql, 3)
db.commit()
except Exception as ex:
print('插入语句错误' + str(ex))
db.rollback()
finally:
db.close()
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
· 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的各种操作要么都做,要么都不做。
· 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
· 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
· 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
在pymysql模块是默认开启MySQL的事务功能的,MySQL不会自动提交所执行的相关SQL语句。因此,进行"增"、"删"、"改"的时候,一定要使用db.commit()提交事务,否则就看不见所插入的数据。
同时,进行"增"、"删"、"改"的时候,一定要使用try…except…语句,因为SQL语句一旦没有执行成功,我们可以使用db.rollback()回滚到操作之前的状态;当语句执行成功,我们就db.commit()提交事务。
math模块是python中的数学函数模块,进行一些数学计算功能
函数 | 用法 | 例子 |
---|---|---|
ceil(x) | 向上取整操作,返回类型:int | ceil(3.2) 输出:4 |
floor(x) | 向下取整操作,返回类型:int | floor(3.2) 输出:3 |
pow(x,y) | 计算一个数x的y次方;返回类型:float,该操作相当于**运算但是结果为浮点 | pow(2,3) 输出:8.0 |
sqrt(x) | 开平方,返回类型:float | sqrt(4) 输出:2.0 |
fabs(x) | 对一个数值获取其绝对值操作 | fabs(-1) 输出:1 |
copysign(x,y) | 返回一个符号为y值为x的数值,返回类型:float | copysign(2, -4)输出:-2.0; copysign(2, 4)输出:2.0 |
factorial(x) | 返回一个整形数值的阶乘 | factorial(3)输出:6 |
fmod(x,y) | 取模运算,返回类型:float | fmod(4,2)输出:0.0 fmod(4,5)输出:4.0 fmod(4,3)输出:1.0 |
fsum([]) | 返回迭代器中值的精确浮点和,返回类型:float | fsum([1.1,2.23]) 输出:3.33 fsum([2.4,4.3]) 输出:6.699999999999999 |
gcd(a, b) | 返回a、b的最大公约数,返回类型:int | gcd(2,4) 输出:2 |
isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) | 判断两个数是否接近,返回类型:True/False | isclose(0.99,1,rel_tol=0.2) 输出:True isclose(0.9999999999,0.999999999991) 输出:True math.isclose(0.99,0) 输出:False |
modf(x) | 返回x的小数部分和整数部分。两个结果都带有x的符号,并且都是浮点数 | modf(2.4) 输出:(0.3999999999999999, 2.0) |
trunc | 取整,返回类型:int | trunc(44.3333)输出:44 |
import math
a = math.ceil(3.2) #向上取整
a = math.floor(3.2) #向下取整
a = math.pow(3,2) #3的2次方
a = math.sqrt(4) #开平方
a = math.fabs(-1) #绝对值
a = math.copysign(4, -2) #符号是符号,值是数值
a = math.factorial(4) #阶乘 4*3*2*1
a = math.fmod(4,2) #取余
a = math.fsum([2,3]) #迭代器的和
print(a)
常数名称 | 使用说明 |
---|---|
pi | π = 3.141592 ...**,可用精度** |
e | e = 2.718281 ...,达到可用的精度 |
tau | τ = 6.283185 ......,可达到精度 |
inf | 无穷大 |
nan | 非数字 |
函数 | 用法 | 例子 |
---|---|---|
log(n) | e**为底数** | log(5) 输出结果: 1.6094379124341003 |
log(n, basic) | 其他数为底数 | log(2, 5)输出结果: 0.43067655807339306 |
log2(n) | 2为底数 | log2(5)输出结果: 2.321928094887362 |
log10(n) | 10为底数 | log10(2) 输出结果 0.3010299956639812 |
sin(x) | 正弦函数 | sin(5) 输出结果: -0.9589242746631385 |
cos(x) | 余弦函数 | cos(5) 输出结果: 0.28366218546322625 |
tan(x) | 正切函数 | tan(5) 输出结果: -3.380515006246586 |
import math
a = math.log(5)
a = math.log(2,5)
a = math.log2(5)
a = math.log10(2)
a = math.sin(5)
print(a)
方法 | 使用说明 |
---|---|
random.random() | 随机生成一个0-1之间的浮点数 |
random.randint(start,stop) | 随机生成一个start,stop之间的整数 |
random.randrange(start,stop,step) | 随机生成一个start,stop之间的整数 |
random.choice(sequence) | 从一个序列中随机选择一个元素 |
random.shuffle(sequence) | 随机打乱列表的顺序,原列表发生变化 |
random.sample(population,k) | 从集合中随机抽取K个不重复的元素形成新的序列,返回的是一个新的序列,不会破坏原有序列。 |
import random as ra
"""
random.randint(start,stop) 随机生成一个start,stop之间的整数
随机产生start-stop之间的整数,包括start和stop。
"""
for i in range(10):
a = ra.randint(0,10)
print(a)
"""
random.randrange(start,stop,step) 随机生成一个start,stop之间的整数
1.random.randrange(stop) 不写start,默认是0
2.左开右闭
3.step 步长,间隔
"""
#a = ra.randrange(10) #0-9之间的数据,不包含10
#a = ra.randrange(1,10) #1-10,不包含10
a = ra.randrange(1,10,2) #步长2,相当于奇数
print(a)
import random as ra
"""
random.choice(sequence) 从一个序列中随机选择一个元素
1.只能从字符串、元组、列表中随机获取
"""
#
String01 = "I love you"
list01 = ["张三","李四","王五","赵六"]
tuple01 = (1,2,3)
# 报错 dict01 = {"张三":14,"王五":20,"李四":40}
# 报错 set01 = {1,2,3,4}
a = ra.choice(String01)
print(a)
类和对象是面向对象的两大核心
类是对一群具有相同特征和行为的事物的统称,是抽象的
特征被称为属性,行为被称为方法
类型要符合大驼峰命名
class 类名(object):
? ? def 方法名(self,参数):
? ? ?? ?代码块
? ? def 方法名(self,参数):
? ? ? ?代码块
class animals:
color = "yellow"
def sellp(self):
print("睡觉")
def eat(self,food):
print("吃"+food)
dog = animals()
print(dog.color)
dog.eat("骨头")
1.类需不需要参数,比如类名(object)
可以写也可以不写,python3.x中的所有类都继承了object,即使你不写也会默认继承object
2.方法为什么要用self
self是类的实例,并不是一个类
self和java中的this一样,你可以使用this,但是在python中约定俗成的就是self
class animals(object):
color = "yellow"
def duixiang(self):
print(self)
def sellp(self):
print("睡觉")
def eat(self,food):
print("吃"+food)
class dog(animals):
def duixiang(self):
print(self)
"""
self是类的对象,是本类的对象,即使是继承关系,他也是子类的对象,并不是父类的对象
"""
d = dog()
d.duixiang()
an = animals()
an.duixiang()
#pass是空语句,不做任何事情,只是为了保持结构的完整性
#初始化就相当于我们的构造函数,给参数一个默认值,或者是定义某些参数
class animals():
def __init__(self,name,color="白色",age=5):
self.name = name
self.color = color
self.age = age
def eat(self,food):
print("爱吃"+food)
def jiao(self,jiaosheng):
print(jiaosheng)
print(self)
dog = animals("小白")
dog.eat("骨头")
继承:继承就是子类继承父类的特征和行为,python支持多继承,多继承在以后不常用,最多会出现三个继承,因为他很复杂,我们那单继承举例
class 类1(object):
? ? pass
class 类2(object):
? ? pass
class 类3(类1,类2):
? ? pass
"""
定义一个人类
学生类继承人类,同时定义一个花钱的方法
"""
class person():
def __init__(self,name,sex="男",age=18):
self.name = name
self.sex = sex
self.age = age
def sleep(self):
print("睡觉")
def eat(self):
print("一天三顿饭")
def qita(self):
print("不同的人有不同的任务")
def show(self):
s = '姓名:%s,性别:%s,年龄:%d'%(self.name,self.sex,self.age)
return s
class student(person):
def huaqian(self):
print("花钱神兽")
#同样我们可以调用人类中的方法和属性
#继承person类以后,初始化方法也继承过来了,所以一定不要忘了给参数
s = student("小明")
print(s.show())
1.继承完以后我们可以不可以重写方法
2.能不能保留父类的一些方法里面的代码
3.字类可以初始化,可以理解为,字类可以有构造方法吗
4.那么初始化的时候,能不能保留父类的初始化呢
1.继承完以后我们可以不可以重写方法
#学生不应该是个对象,是个类的话更加好操作,那把学生定义成类,他要继承人类
class student(person):
def huaqian(self):
print("花钱神兽")
def qita(self):
print("学生的任务是:好好学习天天向上")
#继承person类以后,初始化方法也继承过来了
s = student("小明")
print(s.show())
#我们调用其他会发现,调用的是子类的其他,并不是父类的其他
"""
所以我们python也支持重写
1.不同的两个类 2.继承关系 3.方法名,参数相同
"""
s.qita()
2.能不能保留父类的一些方法里面的代码
class student(person):
def huaqian(self):
print("花钱神兽")
def qita(self):
#调用父类的方法
super().qita()
print("学生的任务是:好好学习天天向上")
#继承person类以后,初始化方法也继承过来了
s = student("小明")
"""
可不可以保留这样的一句话,
不同的人有不同的任务,学生的任务是:好好学习天天向上
意思是在父类的基础上重新添加代码
"""
s.qita()
3.字类可以初始化,可以理解为,字类可以有构造方法吗
class student(person):
def __init__(self, name,hobbit,sex="男", age=18,):
self.hobbit = hobbit
4.那么初始化的时候,能不能保留父类的初始化呢
class student(person):
def __init__(self, name, hobbit,sex="男", age=18):
#引用父类的初始化
super().__init__(name, sex=sex, age=age)
self.hobbit = hobbit
s = student("小明","打游戏")
print(s.name)
print(s.age)
静态属性:直接写在类里面的是静态属性
动态属性:写在初始化里面的是动态属性,因为它可以改变
静态方法:staticmethod
普通方法:
公有:公共的
私有:不允许外部访问的,私有的
组合起来有:公有静态属性、公有动态属性、公有静态方法、公有普通方法
私有静态属性、私有动态属性、私有静态方法、私有普通方法
class person():
food = "馒头,公有静态属性" #比如所有的人喜欢吃馒头
def eat(self): #类内部访问
print("所有的人喜欢吃"+self.food)
class student(person):
def studentEat(self):#派生类访问
print("学生喜欢吃"+self.food)
#类访问。就是类自己可以访问
print(person.food)
#类内部访问
p = person()
p.eat()
#派生类访问
s = student()
s.studentEat()
class person():
__gongju = "手机,私有静态属性"
def wan(self):#类内部访问
print(self.__gongju)
class student(person):
def chagang(self):#派生类访问
print(self.__gongju,"这是能随便查的吗")
#类访问----->报错
#print(person.__gongju )
#类内部访问
p = person()
p.wan()
#派生类访问--->报错
s= student()
s.chagang()
"""
通过对象访问
类内部可以访问:类的内部的某个方法
派生类可以访问: 类1继承类2,类1是派生类
"""
class person():
def __init__(self,name,sex,age):
#以下这些属于公有字段/成员变量
self.name = name
self.sex = sex
self.age =age
def perShow(self):#类内部访问
print(self.name)
print(self.sex)
print(self.age)
class student(person):
def show(self):#派生类的使用
print(self.name)
print(self.sex)
print(self.age)
#通过对象访问
p = person("张三","男",18)
print(p.name)
#类内部可以访问
p.perShow()
#派生类可以访问
s = student("小明","男",70)
s.show()
class person():
def __init__(self,name,phone,idCar):
self.name = name #公有字段
self.__phone = phone #私有字段
self.__idCar = idCar #私有字段
def perShow(self):#类内部访问
print(self.name)
print(self.__phone)
print(self.__idCar)
class student(person):
def show(self):#派生类的使用
print(self.name)
print(self.__phone)
print(self.__idCar)
#通过对象访问-----失败报错
p = person("张三","11111111111","223456789098865432")
#print(p.name)
#print(p.__idCar)
#print(p.__phone)
#类内部可以访问----成功
p.perShow()
#派生类可以访问----失败报错
s = student("xiaoming","11111111111","223456789098865432")
s.show()
"""
总结:私有的普通字段只能在类的内部访问
"""
class person():
def drink(self):
print("所有人都得喝水,公有的普通方法")
def he(self):#类内部
self.drink()
class student(person):
pass
#类对象访问
p = person()
p.drink()
#类内部
p.he()
#派生类访问
s = student()
s.drink()
class person():
def __wc(self):
print("厕所,私有普通方法")
def Wcc(self):#类内部访问
self.__wc()
class student(person):
pass
#对象访问----->报错
p = person()
#p.__wc()
#类内部访问---->成功
p.Wcc()
#派生类访问---->报错
s = student()
s.__wc()
"""
静态方法的关键字:staticmethod [?meθ?d]方法
语法:@staticmethod
"""
class person():
@staticmethod
def jiaoliu():
print("所有的人都有朋友,公有的静态方法")
def aihao(self):#类内部访问
self.jiaoliu()
class student(person):
pass
#对象访问
p = person()
p.jiaoliu()
#类内部访问
p.aihao()
#派生类访问
s = student()
s.jiaoliu()
#类直接访问
person.jiaoliu()
class person():
@staticmethod
def __jiaoliu():
print("所有的人都有朋友,公有的静态方法")
def aihao(self):#类内部访问
self.__jiaoliu()
class student(person):
pass
#对象访问 ---->报错
p = person()
#p.jiaoliu()
#类内部访问
p.aihao()
#派生类访问---->报错
s = student()
#s.jiaoliu()
#类直接访问
#person.jiaoliu()
公有静态属性:1.类访问 2.类内部访问 3.派生类访问
私有静态属性:只能类内部访问
------------------------------------------------
公有动态属性:1.类对象 2.类内部访问 3.派生类访问
私有动态属性:只能类内部访问
------------------------------------------------
公有普通方法:1.类对象 2.类内部访问 3.派生类访问
私有普通方法:只能类内部访问
----------------------------------------------
公有静态方法:1.类对象 2.类内部访问 3.派生类访问 4.类直接访问
私有静态方法:只能类内部访问
class person():
#初始化
def __init__(self,name,sex,age,phone,idCar):
self.__name = name
self.__sex = sex
self.__age = age
self.__phone = phone
self.__idCar = idCar
def eat(self):
print("吃饭")
def sleep(self):
print("睡觉")
def __wc(self):
print("wc")
def show(self):
print(self.__name )
print(self.__sex)
print(self.__age)
print(self.__phone)
print(self.__idCar)
一个对象多种形态
举例,比如动物类,所有的动物都要吃饭,但是狗类吃的骨头,猫类吃的鱼
那怎么让一个动物类的吃有多种形式呢,在狗和猫这两个子类中重写eat方法
class animal():
def __init__(self,name):
self.name = name
def eat(self):
print("吃饭")
class dog(animal):
def eat(self):
print("吃骨头")
class cat(animal):
def eat(self):
print("吃鱼")
d = dog("哈士奇")
print(d.name)
d.eat()
c = cat("白猫")
print(c.name)
c.eat()
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:26:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |