diff --git "a/docs/Python/\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/docs/Python/\345\270\270\347\224\250\350\257\255\345\217\245.md" index ace4746..d96d859 100644 --- "a/docs/Python/\345\270\270\347\224\250\350\257\255\345\217\245.md" +++ "b/docs/Python/\345\270\270\347\224\250\350\257\255\345\217\245.md" @@ -440,7 +440,6 @@ print(phone.voltage) `__slots__` 的作用就是限制一个类创建的实例只能有固定的属性,不能随意添加属性。 - ```python class Phone: @@ -456,11 +455,13 @@ phone.size = 6 # 报错:AttributeError: 'Phone' object has no attribu ``` ## 继承判定函数 + - type() 函数:type()函数可以判断某个对象是否是某个类型,注意:子类的对象不是父类的对象的类型。 - isinstance()函数:isinstance()函数可以判断某个对象是否是某个类型的实例,子类对象也是父类对象的实例。 - issubclass()函数:issubclass()函数可以用来判断一个类是否是另外一个类的子类。 -## 多继承的解析顺序 +## 多继承的解析顺序 + 如果继承的多个父类拥有同样的属性和方法,那么会使用哪个父类的呢? 会使用先继承的父类的,后继承的无效,如果父类中都没有,则会去父类的父类寻找,一直向上找。 @@ -468,6 +469,7 @@ phone.size = 6 # 报错:AttributeError: 'Phone' object has no attribu 即使类没有写明继承其他类,但是所有的类都直接或间接继承自Object类。 ## 抽象类 + 含有抽象方法的类成为抽象类。抽象方法就是没有方法体,方法体为空的方法。 ```python @@ -476,9 +478,72 @@ class Vehicle: pass ``` +# JSON + +```python +import json + +class Student: + + def __init__(self, sid, name, age): + self.sid = sid + self.name = name + self.age = age + +if __name__ == '__main__': + # 将字典转换为JSON数据 + + stu_dict = {"sid": "001", "name": "zhangsan", "age": 18} + + json_data = json.dumps(stu_dict, ensure_ascii=False) # 使用dumps()方法,将字典转换为JSON数据 + print(json_data) + print(type(json_data)) + + # 将JSON数据转换为字典 + + json_data = '{"sid": "001", "name": "张三", "age": 18}' + + stu_dict = json.loads(json_data) # 使用loads()方法,将JSON数据转换为字典 + print(stu_dict["name"]) + + # 对象转换为JSON + + stu = Student("001", "张三", 98) + stu_json = json.dumps(stu.__dict__, ensure_ascii=False) # 获取对象的字典格式 + print(f"对象转换为json:{stu_json}") + + # JSON转换为对象 + json_str = '{"sid": "001", "name": "张三", "age": 98}' + + stu_dict = json.loads(json_str) # 首先将JSON字符串转换为字典 + print(stu_dict["name"]) + + stu = Student(**stu_dict) # 然后通过双星号字典形参传递给构造方法,创建对象,这个类,需要有构造方法 + print(stu.name) +``` + +# 模块和包 -## +每一个以 .py 结尾的python文件就是一个模块。 + +```python +import 模块名 # 导入单个模块 +import 模块名1, 模块名2 # 导入多个模块 +import time # 导入时间模块,就有一个time的py文件 + + +from 模块名 import 功能名 +from 模块名 import 功能名 as 别名 # 功能也可以起别名 +from time import sleep # 只导入模块中的sleep方法 + +from 模块名 import * +from time import * # 只导入模块中所有的函数 + +``` +## 模块的搜索顺序 +python解释器在导入模块的时候,会搜索当前目录指定模块名的文件,如果有就直接导入,如果没有在搜索系统目录。 +所以在开发的时候,给文件起名,不要和系统的模块文件重名,否则会导致调用的系统功能无效。 \ No newline at end of file