8/21 python基础学习4


第九章 类

类的创建:

class Dog:

    def __init__(self, name, age):  # 初始化函数
        self.name = name
        self.age = age

    def sit(self):
        print(f"{self.name} is now sitting")


class my_dog(Dog):

    def __init__(self, name, age, color):
        super().__init__(name, age)
        self.color = color

    def print(self):
        print(f" name = {self.name}/n age = {self.age}/n color = {self.color}")


Adog = Dog("feifei", 4)
md = my_dog("feifei", 4, "white")
md.print()

继承:()内指定要继承的父类。
super() 让子类可以调用父类的方法。
python的属性和函数默认是public
类的私有属性便是在前面加上“__”标识符,而公共属性则不必。
类的文件也可以像函数模块一样import
注意:可以多用别名

第十章 文件和异常

书上有些谬误,比如读文件得到的字符串已经不包含额外的换行。
以及读到的文件对象,不能直接逐行遍历,要先分割read()得到的字符串。
读取文件:

with open('num.txt') as file_obj:
    contents = file_obj.read()
print(contents)

由于反斜杠/是转义字符,下面两种路径效果一样

with open('C://Users//admin//Desktop//name.txt') as file_obj:
    contents = file_obj.read()
with open('C:/Users/admin/Desktop/name.txt') as file_obj:
    con = file_obj.read()
lines = con.split("/n")
for line in lines: #逐行输出
    print(line)

注意使用with关键字时,open()返回的文件对象只能在with代码块中使用。
字符串可以直接使用if(str in strall)来判断字符串是否存在strall中

python写入文件,a+为附加模式。

with open('C:/Users/admin/Desktop/name.txt', 'a+') as file_obj:
    con = file_obj.read()
    file_obj.write("/nlisi")

异常

使用try-except代码块,如果发生了问题,可以执行except中的代码,而不是直接报错。

try:
    print(5/0)
except ZeroDivisionError:
    print("error!/nyou can't divide by zero")
else:
    print("exit")

else里可以执行,运行成功后执行的代码。
可以使用pass来让代码块中什么都不做。

使用json来存储数据以便多个程序共享:
写程序

import json

nums = [2, 3, 3, 4, 5, 6, 7, 8, 9]

file_name = 'num.json'
with open(file_name, 'w') as f:
    json.dump(nums, f)

读程序:

import json

file_name = 'num.json'
with open(file_name) as f:
    nums = json.load(f)

print(nums)

使用方法类似共享内存,需要一个写死的字符串来共享数据。
dumps()函数将JSON对象转为文本字符串。
写代码降低耦合性,把功能尽量分开划分,方便代码维护。

第十一章 测试代码

python在模块 unittest 提供了代码测试工具。
单元测试

import json
import unittest
from test import input_num


class json_test(unittest.TestCase):

    def test(self):
        input_num([3, 4, 5, 6])
        file_name = 'num.json'
        with open(file_name) as f:
            test_num = json.load(f)
        self.assertEqual(test_num, [3, 4, 5, 6])#断言方法

if __name__ == '__main__':
    unittest.main()

unittest.main()运行测试类开头为“test”的函数。
可以使用定义set_up()方法,来建立测试用例。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/281537.html

(0)
上一篇 2022年8月22日
下一篇 2022年8月22日

相关推荐

发表回复

登录后才能评论