知识:
#继承,创建有继承的类 #父类、子类 #class 子类(父类): #调用时找父类的构造函数,如果子类自己有某函数则调用子类的,否则调用父类的 #在子类有构造函数的时候调用父类,可以用super().__init__的方法调用父类函数
代码:
#举例人力系统
class staff:def __init__(self,name,id):self.name = nameself.id = iddef print_info(self):print(f"员工名字:{self.name},工号{self.id}")class FullStaff(staff):def __init__(self,name,id,monthsalary):super().__init__(name,id)self.monthsalary = monthsalarydef caculatemonthpay(self):return self.monthsalaryclass parTimeEmployee(staff):def __init__(self,name,id,daysalary,workdays):super().__init__(name,id)self.daysalary = daysalaryself.workdays = workdaysdef caculatedaypay(self):return self.daysalary * self.workdayszhangsan = FullStaff("张三","1001",6000)
lisi = parTimeEmployee("李四","1002",300,15)
zhangsan.print_info()
lisi.print_info()
print(zhangsan.caculatemonthpay())
print(lisi.caculatedaypay())
结果:
知识:#用python读取文件
#用python读取文件
#open函数打开目标文件,返回文件对象 #f = open("路径","模式",encoding = "编码方式") 模式默认为r,编码方式一般为”utf-8“ #读方式:f.read() 读取文件中所有内容,并以字符串形式返回 #重复读文件,第二次会返回空,因为程序会记录上一次读到的位置(结尾)
#可以控制读取的字节数 f.read(10) #f.readline() 根据换行符每次只读一行的内容,并且会记录读到哪个位置 #结合while读取文件所有内容 # line = f.readline() # while line != "": # print(line) # line = f.readline
#readlines方法 会读取文件全部内容,并把每行作为列元素返回的是一个列表,包括换行符 #会和for结合使用 # lines = f.readlines() # for line in lines: # print(line)
#每次读完文件要关闭 #显示关闭f.close() #或者 # with open("路径") as f: # print(f.read())#运行完缩进里的主体就自动关闭文件
路径:
代码:
# f = open("./study.txt","r",encoding = "utf-8")
# content = f.read()
# print(content)
# f.close()
#或者
# with open("./study.txt","r",encoding = "utf-8") as f:
# content = f.read()
# print(content)
#或者
with open("./study.txt","r",encoding = "utf-8") as f:content = f.readlines()print(content)print()for i in content:print(i)#输出时它本身就带换行符
结果:
知识:用python写文件
#w模式下,下一次打开文件会先清除文件本身存在的内容,三思再用 #不会默认帮你换行,需要手动加\n#追加模式"a" #读写模式"r+",会以追加的方式在文件后面加内容#没有文件会自动创建文件
代码:
with open("./study.txt","w",encoding = "utf-8") as f:f.write("Hello!\n")f.write("How are you?")f = open("./study.txt","w",encoding="utf-8")
f.write("你好")#此时文件内原本的英文被清空,只有”你好“
练习:
1.在新文件"poem.txt"文件写入诗句“我欲乘风归去,
又恐琼楼玉宇。
高处不胜寒。”
2.在上面文件后面追加诗句:“起舞弄清影,
何似在人间。”
代码:
with open("./study.txt","w",encoding = "utf-8") as f:f.write("我欲乘风归去\n")f.write("又恐琼楼玉宇\n")f.write("高处不胜寒\n")
with open("./study.txt","a",encoding = "utf-8") as f:f.write("起舞弄清影\n")f.write("何似在人间\n")
结果:
知识:捕捉异常、测试
#捕捉异常,从上往下执行,出现错误则之后的语句都不会执行 try:#可能会报错的代码 except ValueError:#错误发生后的相应操作 except:#会捕捉所有错误类型 else:#返回正常执行需要的语句 finally:#不管正常还是异常都会执行finally
python -m unittest
. 通过测试
F 未通过测试
代码1:
class ShoppingList:#对商品清单初始化def __init__(self,shopping_list):self.shopping_list = shopping_list#返回商品总数def get_item_count(self):return len(self.shopping_list)#返回商品总价钱def get_item_price(self):total_price = 0for price in self.shopping_list.values():total_price += pricereturn total_price
test代码2:
#以test_开头才能被unittest当作测试用例
import unittest
from study import ShoppingList#从文件里把类引入class TestShoppingList(unittest.TestCase):def setUp(self):self.shoppinglist = ShoppingList({"纸巾":10,"牙刷":5,"沐浴露":23})def test_get_item_count(self):self.assertEqual(self.shoppinglist.get_item_count(),3)def test_get_total_price(self):self.assertEqual(self.shoppinglist.get_item_price(),38)
结果:
知识:高阶函数、匿名函数lambda
高阶函数,匿名函数lambda