python全栈学习--面向对象进阶3

复习:

#反射 必须会,必须能看的懂,必须知道在哪儿用

#hasattr  getattr setattr delattr

内置方法 必须能看懂 能用尽量用

__len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度

__hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值

__eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等

__str__ str(obj) print(obj) ‘%s‘%obj 的结果依赖于__str__,用来做输出、显示

__repr__ repr(obj) ‘%r‘%obj的结果依赖于__repr__,还可以做str的备胎

__format__ format() 的结果依赖于__format__的结果,是对象格式化的

__call__ obj() 相当于调用 __call__, 实现了__call__的对象是callable 的

__new__  构造方法,在执行__init__之前执行,负责创建一个对象,在单例模式中有具体的应用

__del__ 析构方法,在对象删除的时候,删除这个对象之前执行,主要用来关闭在对象中打开的系统资源

class A:
     def __getitem__(self, item):
         print(item)
a = A()

__getitem__  对象[]的新式对对象进行增删改查

__setitem__

__delitem__

__delattr__  del obj.attr  用来自定义删除一个属性的方法

只有一个对象,只开了一个内存空间

创建一个类 单例模式中的对象属性编程类中的静态属性,所有的方法变成类方法

设计模式---java

python中的单例模式  是使用__new__

python

显示一个对象中的所有a开头的属性

二,模块

py文件就是模块

python之所以好用,模块多

三种

  1.内置模块

    python安装的时候自带的

  2.扩展模块

    例如:

      itchat

      beautiful soap

      selenium  网页自动化测试工具

      django  tornado

  3.自定义模块

内置模块

序列化模块

hashlib 模块

序列化模块

能存储在文件中的一定是字符串,或者是字节

能在网络上传输的 只有字节

dic = {"层数":(90,23)}
print(str(dic))
print(str(dic).encode(encoding=‘utf-8‘))##注意上面中文才会显示下方 \xe5........

  

dic = {"层数":(90,23)}
print(str(dic))
print(str(dic).encode(encoding=‘utf-8‘))
b"{‘\xe5\xb1\x82\xe6\x95\xb0‘: (90, 23)}"
s = b"{‘\xe5\xb1\x82\xe6\x95\xb0‘: (90, 23)}"
res = s.decode(encoding=‘utf-8‘)
print(res)

  

# dic --> 字符串  序列化#字符串 --> dic   反序列化#序列化 == 创造一个序列 ==》创造一个字符串#实例化 == 创造一个实例
import json
#序列化
dic = {"john":(190,90)}
ret = json.dumps(dic,ensure_ascii=False)
print(type(dic),dic)
print(type(ret),ret)
print(‘*‘,str(dic)) #土办法
#反序列化
res = json.loads(ret)
print(type(res),res)

  执行输出:

f = open(‘john‘,‘r‘,encoding=‘utf-8‘)
ret = json.load(f)
print(type(ret),ret)

  执行输出

dump 序列化  load反序列化   主要用于一个数据直接存在文件里直接和文件打交道

dumps序列化 loads反序列化   只在内存中操作数据  主要用于网络传输和多个数据与文件打交道

import pickle



原文地址:https://www.cnblogs.com/haowen980/p/8893308.html

时间: 2024-11-08 05:00:03

python全栈学习--面向对象进阶3的相关文章

Python全栈开发——面向对象进阶(一切皆对象)

1.isinstance(obj,cls)            检查obj是否是类cls的对象,issubclass(sub,super)          检查sub是否是super的子类 #isinstance(obj,cls) 检查obj是否是类cls的对象 class Foo: pass f=Foo() print(isinstance(f,Foo)) #True #issubclass(sub,super) 检查sub是否是super的子类 class Bar(Foo): pass

python全栈学习--Day18(面向对象交互)

一.对象之间的交互 现在我们已经有了一个人类了,在通过人类一些具体的属性我们就可以那到一个实实在在的人. 现在我们要在创建一个狗类,狗就不能打人了.只能咬人,所以我们给狗一个bite方法. 有了狗类,我们还要实例化一只是实实在在的狗出来. 然后人和狗就可以打架了.现在我们就来让他们打一架吧! 创建一个狗类 class Person: role = 'person' #静态属性 def __init__(self,name,sex,hp,ad): self.name = name self.sex

python全栈学习--Day19(面向对象组合,继承)

一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 1 2 3 4 5 6 7 8 9 10 class Dog:     def __init__(self, name, kind, hp, ad):         self.name = name  # 对象属性 属性         self.kind = kind         self.hp = hp         self.ad = ad     def bite(self, p):         p.h

python全栈学习路线

查询目录 一,硬件                                                                    十一,数据库 二,Linux基础                                                           十二,前端 三,python基础                                                        十三,Django 四,python文件处理   

Python全栈开发--面向对象3

面向对象的三大特性: 多态 多态指的是一类事物有多种形态.Python3天生支持多态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say hello') class Dog(Animal): #动物的形态

python全栈学习--day4

列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据.列表是有序的,有索引值,可切片,方便取值. 索引,切片,步长 li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',

Python全栈学习:如何安装Python方法,详解!

因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先就得把Python安装到你的电脑里.安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 安装Python 3.7 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,我们的教程

python全栈学习--day31(正则)

try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' try: '''可能会出现异常的代码''' except ValueError: ''''打印一些提示或者处理的内容''' except NameError: '''...''' except Exception: '''万能异常不能乱用''' else

python全栈学习总结更新字符串:字符串格式化方法

一百分号方式 """ 百分号方式 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐:正数前加正好,负数前加负号: - 左对齐:正数前无符号,负数前加负号: 空格 右对齐:正数前加空格,负数前加负号: 0 右对齐:正数前无符号,负数前加负号:用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必