1、简述构造方法和析构方法。

构造方法(__init__):主要作用是实例化时给实例一些初始化参数,或执行一些其它的初始化工作,总之因为这个__init__只要一实例化,

就会自动执行,不管你在这个方法里写什么,它都会统统在实例化时执行一遍。

__del__就是析构方法。

实例在内存中被删除时,会自动执行这个方法,如你在内存里生成了一个人的实例,现在他被打死了,那这个人除了自己的实例要被删除外,

可能它在实例外产生的一些痕迹也要清除掉,清除的动作就可以写在这个方法里。

2、口述一下在python3.6环境下的结果。口述一下在python2.7环境下的结果。

在python3.6下执行的结果 : from D 
[A  E B C object]

在python2.7下执行的结果:from D 
然后抛出异常 ,经典类没有mro属性

3、 静态方法和类方法的区别是什么?

静态方法:staticmethod  ,对象和类都可以调用,没有自动传值一说。

类方法:classmethod, 类调用时会交类本身当作第一个参数传入。对象调用时也会交类本身当作第一个参数传入。

4、简述__new__和__init__的区别

答:1、__new__是一个静态方法。类实例化时第一个执行,执行完后才执行__init__,继承自object的新式类才有__new__

2、__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别

3、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类

(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例

4、__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值

5、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,

;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。

 
 5、简述什么是反射,以及实现反射的方法。 
答:反射就是通过字符串的形式操作对象相关的属性。
hasattr(obj,name)
 
func= getattr(obj,name)
func() #getattr 必须要赋值给变量,然后再执行
 
setattr(obj,name,value) 
 
delattr(obj,name)
 
6、 简述什么是socket,什么是黏包,黏包的原因是什么?
 答:socket 是应用层与tcp/ip协议族通信的中间软伯抽象层,它是一组接口,在设计模式中,socket其实就是一个门面模式。
它把复杂的TCP/IP协议族隐藏Socket接口后面,对用户来说,一组简单的接口,就是全部。
包:数据粘在一起,主要因为:接收方不知道消息之间的界限,不知道一次性提取
多少字节的数据造成的数据量比较小,时间间隔比较短,就合并成了一个包
 
 
编程题
 1、编写一个学生类,要求有一个计数器的属性,统计总共实例化了多少个学生。 
class Student:
__count = 0 def __init__(self,name):
self.name = name
Student.__count += 1 def eat(self):
print("%s is eating"%self.name) def tell_info(self):
print("一共实例化了%s 个学生"%Student.__count)
s1 = Student("alex")
s2 = Student("andyzhnag")
s3 = Student("fengfeng")
s2.tell_info()
 
2、 写一个客户端调用服务端系统命令的程序。 
服务端
import socket
import subprocess
import struct server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(("127.0.0.1",8080))
server.listen(5) while True:#链接循环
print("start...")
conn,addr=server.accept()
print(addr)
while True:#通信循环
cmd = conn.recv(1024)
res = subprocess.Popen(cmd.decode("utf-8"),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout = res.stdout.read()
stderr = res.stderr.read() conn.send(stdout)
conn.send(stderr)
conn.close()
server.close()

客户端

import socket

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_port = ("127.0.0.1",8080) print("start...")
client.connect(ip_port) while True:
cmd = input("请输入命令:")
client.send(cmd.encode("utf-8")) msg = client.recv(8096)
print(msg.decode("gbk"))
 
 
 3、加工标准类型,写一个类,继承列表,实现以下功能:
  1. 初始化时传递一个标志位,标志位默认为None,不为None时,可以使用clear()方法清空列表中的元素。
  2.添加元素时,只能添加字符串,其余类型则报错。
  3. 实现获取中间值的属性。 

class List(list):
def __init__(self,char,tag = None):
for i in char:
if not isinstance(i,str):
raise TypeError("传入的值必须为字str")
else:
super().__init__(char)
self.tag = tag def clear(self):
if self.tag:
super().clear()
else:
print("标志位不允许删除") def mid(self):
half_mid = len(self) //2
return self[half_mid] l = List(["alex","egon","fengfeng","andyzhang"])
print(l)
print(l.mid())
l.clear()
l.tag = True
l.clear()
print(l)
 
#仅供学习,不要拿去路飞闯关考试作弊哟。 python交流QQ:249139540 加我注明python 

第三模块 面向对象& 网络编程基础 实战考核的更多相关文章

  1. 第三模块:面向对象&网络编程基础 第2章 网络编程

    01-计算机基础 02-什么是网络 03-五层协议详解 04-传输层详解 05-什么是Socket 06-基于socket实现简单套接字通信 07-在简单套接字基础上加上通信循环 08-客户端与服务端 ...

  2. 第三模块:面向对象&网络编程基础 第1章 面向对象

    我的失败与梦想(一) 我的失败与梦想之为何创办路飞学城 01-编程范式 02-面向过程编程 03-面向对象编程介绍 04-定义类与实例化出对象 05-如何使用类 06-如何使用对象 07-属性查找与绑 ...

  3. 第三模块:面向对象&网络编程基础 第4章 FTP项目作业讲解

    01-FTP项目需求 02-FTP项目框架搭建 03-FTP项目用户认证 04--FTP项目制定标准定长消息头 05-FTP项目下载功能开发 06-FTP项目下载功能开发2 07-FTP项目ls文件列 ...

  4. 第三模块:面向对象&网络编程基础 第3章 选课系统作业讲解

    01-选课系统作业讲解1 02--选课系统作业讲解2 03-选课系统作业讲解3 04--选课系统作业讲解4 01-选课系统作业讲解1 02--选课系统作业讲解2 03-选课系统作业讲解3 04--选课 ...

  5. 用Netty开发中间件:网络编程基础

    用Netty开发中间件:网络编程基础 <Netty权威指南>在网上的评价不是很高,尤其是第一版,第二版能稍好些?入手后快速翻看了大半本,不免还是想对<Netty权威指南(第二版)&g ...

  6. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程 并行与并发 同步与异步 阻塞与非阻塞 CPU密集型与IO密集型 线程与进程 进 ...

  7. python全栈开发从入门到放弃之socket网络编程基础

    网络编程基础 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...

  8. 网络编程基础之C/S架构和TCP/IP协议

    一.何谓C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),既然我们的的标题是网络编程基础, 那我们就一起来学习怎样写一个C/S架构的软件,实现服务端与客户端软件基于网 ...

  9. 大数据学习笔记——Java篇之网络编程基础

    Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...

随机推荐

  1. 在JavaScript中同步与异步

    在JavaScript中,一个线程执行的时候不依靠其他线程处理完毕我们称为异步,相反一个线程必须等待直到另一个线程处理完毕我们则称为同步.打个比方: (1)同步就是你在煮方便面的时候必须等水开了,你才 ...

  2. 【干货】JavaScript DOM编程艺术学习笔记7-9

    七.动态创建标记 在文档中不写占位图片和文字代码,在能调用js的情况下动态创建,文档支持性更好. 在原来的addLoadEvent prepareGallery showPic的基础上增加函数prep ...

  3. Android RecycleView实现混合Item布局

    首先来看看效果吧: 效果预览.png 本实例来自于慕课网的视屏http://www.imooc.com/video/13046,实现步骤可以自己去观看视屏,这里只记录了下实现的代码. 添加依赖: (1 ...

  4. Android Broadcast Receive

    Broadcast Receive 广播接收(Broadcast Receive)为android的四大组件之一.主要用于监听广播消息,并做出响应.与应用程序中监听事件相比而言,该监听事件为全局监听. ...

  5. Android商城开发系列(十一)—— 首页秒杀布局实现

    首页秒杀布局如下图: 布局使用的是LinearLayout和RecyclerView去实现,新建seckkill_item.xml,代码如下所示: <?xml version="1.0 ...

  6. ThinkPHP添加扩展配置失败

    扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样.设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'us ...

  7. office密匙

    office 2010 VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB 6QFDX-PYH2G-PPYFD-C7RJM-BBKQ8 BDD3G-XM7FB-BD2HM-YK63V-VQFD ...

  8. Visual Studio 2015简体中文版

    Visual Studio  2015简体中文版(企业版) http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-A ...

  9. Sonar服务器搭建

    Sonar服务器搭建 Sonar概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson ...

  10. C++各大有名科学计算库(转)

    在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级 ...