博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python--day7
阅读量:4330 次
发布时间:2019-06-06

本文共 4242 字,大约阅读时间需要 14 分钟。

  1. 类的静态方法及属性

多态:多态即为接口的重用(父类调用子类)


 

 

1 #!/usr/bin/env python 2 # encoding: utf-8 3 class Animal: 4     def __init__(self,name): 5         self.name = name 6     def talk(self): 7         raise NotImplementedError("Subclass must implement abstract method") 8  9 class Cat(Animal):10     def talk(self):11         return 'meow'12 class Dog(Animal):13     def talk(self):14         return 'Woof!Woof!'15 16 17 def animal_talk(obj):18     print(obj.talk())19 c = Cat("SanJiangMei")20 d = Dog("SanJiangYuan")21 animal_talk(c)22 animal_talk(d)23 24 或者:25 #animals = [Cat('Missy'),26 #           Dog('Lassie')]27 #for animal in animals:28 #   print(animal.name + ':' + animal.talk())
View Code

 

 

 

类的成员:字段(普通字段、静态字段)、方法(普通方法、类方法、静态方法)、属性 字段也就是变量的意思,普通字段即实例变量。静态字段即类变量 类的方法: 1、@classmethod :类方法,不能访问实例变量 2、@staticmethod :静态方法,不能访问类变量及实例变量 3、@property :把方法变成属性 把变量变成私有属性方法: 加入__即可 ,如果非要访问的话,那么在变量前边加上下划线及类名:_Animal__ 多继承
#!/usr/bin/env python # encoding: utf-8 class A:     n = 'A'     def f2(self): print("f2 from A") class B(A): n = 'B' def f1(self): print("from B") def f2(self): print("f2 from B") class C(A): n = 'C' def f2(self): print("from C") #类D同时继承B和C class D(B,C):#f2方法先找B然后找C,最后找A,这是广度优先 #广度优先的意思为先找同级别,如果同级别没有了再找上一级别 pass d = D() print(d.f1()) print(d.f2()) 类的特殊成员: 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个 下划线,则表示该成员是私有成员,私有成员只能由类内部调用,无论人或事物往往都有不按套路出牌的情况,Python的 类成员也是如此,存在着一些具有特殊含义的成员,详情如下: 1、__doc__  表示类的描述信息(打印类的注释信息、文档)   例如:   class D(B,C):#f2方法先找B然后找C,最后找A,这是广度优先     #广度优先的意思为先找同级别,如果同级别没有了再找上一级别     '''Test class'''     pass   d = D()   print(d.__doc__) 2、__module__和__class__   __module__ 表示当前操作的对象在那个模块(表示所导入的模块的所在文件的文件名)   #!/usr/bin/env python   # encoding: utf-8   from multi_inheritance import D   a = D()   print(a.__module__)   __class__表示当前操作的对象的类是什么 3、__init__   构造方法,通过类创建对象时,自动触发执行。 4、__del__   析构方法,当对象在内存中被释放时,自动触发执行。   注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作   都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的 def __del__(self):#整个程序执行完后销毁     print("deleteing the ...")
5、__call__   对象后面加括号,触发执行   注:构造方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发的,   即:对象()或者类() 6、__new__   此方法会重构类,类中的__init__不会被执行初始化,类中的方法也不能执行 7、__dict__   类中的变量以字典的形式体现出来 8、__str__     如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。 9、__getitem__、__setitem__、__delitem__   用于索引操作,如字典,以上分别表示获取、设置、删除数据 反射:
 
#!/usr/bin/env python # encoding: utf-8 import  sys class Webserver(object): def __init__(self,host,port): self.host = host self.port = port def start(self): print("Server is starting...") def stop(self): print("Server is stopping...") def restart(self): self.stop() self.start() def test_run(self,name): print("running ...",name,self.host) if __name__ == '__main__': print(sys.argv[1]) server = Webserver('localhost',333) #方法二: if hasattr(server,sys.argv[1]):#判断类中是否存在这个属性,如果存在即为真 func = getattr(server,sys.argv[1])#getattr()作用是获取server.start的内存地址 func()#相当于server.start() #setattr方法: # setattr(server,'run',test_run)#把test_run定义到类中 # server.run(server,'shidong') #delete方法:只能删除自己的,不能删除类中的属性 delattr(server,'host') print(server.host) delattr(Webserver,'start') print(server.restart()) #方法一: # cmd_dic = { # 'start':server.start, # 'stop':server.stop # } # if sys.argv[1] in cmd_dic: # cmd_dic[sys.argv[1]]()
 
Socket socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,应用程序通过“套接字”向网络发出 请求或者应答网络请求。 socket起源于Unix,而unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式 来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO 、打开、关闭) 3.0版本 服务器端:
#!/usr/bin/env python # encoding: utf-8 import socket ip_port = ('127.0.0.1',9999) sk = socket.socket()#如果不指定,则默认为TCP/IP sk.bind(ip_port) sk.listen(5) while True: print("server waiting...") conn,addr = sk.accept() #等待连接进来,服务器会根据客户端连接生成专门的实例#一个客户端有一个专门的实例 client_data = conn.recv(1024)#2014个字节 print(str(client_data,'utf8')) conn.sendall(bytes('不要回答,不要回答,不要回答','utf8')) sk.close() 客户端: #!/usr/bin/env python # encoding: utf-8 import socket ip_port = ('127.0.0.1',9999)#ip 为服务端的地址 sk = socket.socket()#如果不指定,则默认为TCP/IP sk.connect(ip_port) sk.sendall(bytes("请求占领地球",'utf8')) server_reply = sk.recv(1024) print(str(server_reply,'utf8')) sk.close()
1 #!/usr/bin/env python2 # encoding: utf-83 import os,sys,getpass,time
View Code

getpass模块

 

 

转载于:https://www.cnblogs.com/sd880413/p/8075261.html

你可能感兴趣的文章
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>