随笔分类 - Python
摘要:server.py client.py
阅读全文
摘要:# socket编程 # OSI五层模型 # 1、物理层 通过光纤,双绞线,无线电波等将不同的计算机进行连接,并传递电信号(010101) # 2、数据链路层 对电信号进行分组,使其有意义,遵循的是以太网协议(ethernet),用于标识不同主机的Mac地址 # 以太网协议规定数据包必须分成两部分,一部分是报头(源Mac,目标Mac),一个是数据部分 。基于arp协议的广播方式进行通信 (局域网...
阅读全文
摘要:# 异常处理 # 常见异常 # SyntaxError 语法错误 # AttributeError 试图访问一个对象没有的属性 # IOError 输入/输出异常;基本上是无法打开文件 # ImportError 无法引入模块或包;基本上是路径问题或名称错误 # IndentationError 语法错误的子类;代码没有正确对齐 # IndexError 下标索引超出序列边界 # KeyErro...
阅读全文
摘要:# 元类(metaclass) type 就是产生类的类,是类的模板 class Foo: pass f1 = Foo() print(type(f1)) # print(type(Foo)) # # f1对象是Foo类的一个实例,Foo类是type类的一个实例 # 第二种方式定义类 def __init__(self, name, age): self.na...
阅读全文
摘要:# 修改与删除@property封装的数据属性 # 原始通过@property实现的功能:将类中定义的函数属性,通过装饰器@property将其封闭成数据属性,这时是不能删除和修改这个数据属性的 class Room: def __init__(self, name, width, length): self.name = name self.widt...
阅读全文
摘要:# 通过描述符自定制@property的功能 # 原始通过@property实现的功能:将类中定义的函数属性,通过装饰器@property将其封闭成数据属性 class Room: def __init__(self, name, width, length): self.name = name self.width = width s...
阅读全文
摘要:# 类的装饰器 # 对不同的类使用装饰器加上不同的类属性 def typed(**kwargs): def deco(obj): for k, v in kwargs.items(): setattr(obj, k, v) return obj return deco @typed(x=1, y=2, z=3) # ...
阅读全文
摘要:# __enter__和__exit__上下文管理协议 f = open('test.txt', 'r', encoding='utf-8') f.read() f.close() # 等同于下面的with...as...写法,实际上就是实现了上下文管理协议,无需再关闭f对象 with open('test.txt', 'r', encoding='utf-8') as f: f.re...
阅读全文
摘要:# 描述符 __get__ __set__ delete__ # 描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete()中的一个,这也称为描述符协议 # __get__() 调用一个属性时触发 # __set__() 为一个属性赋值时触发 # __delete__() 使用del删除属性时触发 # 描述符的作用是用来代理另外一个类的属性(...
阅读全文
摘要:# __next__和__iter__实现迭代器协议 class Foo: def __init__(self, n): # 初始化 self.n = n def __iter__(self): # 定义类的__iter__方法,实例化时就为一个可迭代对象 return self def __next__(self): # 定义类的_...
阅读全文
摘要:# __slots__ __doc__ __module__ __class__ __del__ __call__ # __slots__ 定义在类中的类属性,如果你有一个属性很少的类,但是有很多实例,为了节省内存可以使用__slots__ # 在类当中定义了__slots__,实例就没有自己的属性字典__dict__只能使用__slots__提供的属性且不能新增其它属性 # 实例查看属性时不...
阅读全文
摘要:# __getitem__ __setitem__ __delitem__ # 只适用于类似操作字典的操作才会触发 class Foo: def __getitem__(self, item): print('调用了__getitem__') return self.__dict__[item] def __setitem__(self, key...
阅读全文
摘要:# __str__ __repr__ 与 __format__ class Foo: def __init__(self, year, month, day): self.year = year self.month = month self.day = day def __str__(self): return ...
阅读全文
摘要:# isinstance issubclass 与系统内置属性 __getattribute__ # isinstance(obj, cls)检查obj是否是类cls的实例 class Foo: pass obj = Foo() print(isinstance(obj, Foo)) # True 判断obj是否是Foo类的实例 mystr = 'hello world' pr...
阅读全文
摘要:# 二次加工系统的标准类型 # 1、通过继承系统的类来完成包装, 定制自己的数据类型 class List(list): # 定义了一个List类,继承自系统中的list类 def append(self, p_object): # 重写了append方法,改为只能添加字符串 if type(p_object) is str: super()...
阅读全文
摘要:# 类的内置attr属性 class Foo: x = 1 def __init__(self, y): self.y = y def __getattr__(self, item): # 当实例调一个不存在的属性时才触发此方法 print('执行__getattr__,你查找的属性【%s】不在在' % item) def...
阅读全文
摘要:# 反射(也称为自省) # 反射的概念:指程序可以访问、检测和修改它本身状态或行为的一种能力 # 四个可以实现反射的函数 # 下列方法适用于类和对象 # hasattr(object, name) 第一个参数传对象,第二个参数传一个字符串 # 判断object中有没有name属性 class A: a = 'aaa' def __init__(self, name, add...
阅读全文
摘要:# 面向对象的三大特性之封装 # 第一个层面的封装:类就是麻袋,这本身就是一种封装 # 第二个层面的封装:类中定义私有的,只在类内部使用,外部无法访问 # 约定一:任何以单下划线开头的名字都应该是内部的,私有的 # 约定二:双下划线开头的名字(如__name),外部无法直接访问,因为这种双下划线开头的名字已经被python转化为 _类名__name # 第三个层面的封装:明确区分内外,内部的实...
阅读全文

浙公网安备 33010602011771号