码迷,mamicode.com
首页 > 编程语言 > 详细

PYTHON之路(七)

时间:2016-03-12 18:31:09      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:


多态

技术分享



技术分享

看到每个动物类都有自己的talk方法,调用时需明确指定是那个动物实例要调用talk方法,才不会错。
这时定义一个函数,提供统一的调用接口,是猫就调用猫类的talk方法。完成对多态的模拟。obj参数未指定类型,即可传递任何参数。

比如java语言, 他的统一接口是这样写的:

def animalTalk(object obj):
print(obj.name,": ", obj.talk())

object obj意思即所有基类都来调用。要不然的明确指明: dog obj 则只能dog类能调用。
#######################################################################


类的方法

classmethod 不能访问实例变量


技术分享  技术分享


技术分享



staticmethod 不能访问实例变量和类变量




技术分享



property 将方法变成属性,调用时无需(), 不接受参数, 需用.setter赋予值, 用.deleter 删除赋予的值。

 

技术分享

技术分享


类的私有属性 self.__num = num #私有属性, 类能访问,实例不能.实在要访问, 用实例._类名__num , 如a._animal__num

技术分享
###########################################################################

经典类 深度优先 B(A), C(A), D(B,C) D -- > B -- > A -- > C


技术分享



新式类 广度优先 B(A), C(A), D(B,C) D -- > B -- > C -- >A

技术分享

python3.0不管经典还是新式类,都是广度优先



############################################################################################

类的特殊成员


技术分享




技术分享



技术分享


技术分享


技术分享

打印实例变量和私有属性,不打印类变量






技术分享




##########################################################################





类的反射 hasattr getattr setattr delattr
hasattr 判断输入字符串是否与实例的属性同名 参数:object + 字符串
getattr 获取此实例属性的内存地址 参数:object + 字符串
setattr 设置函数名成为实例的新属性 参数:object + 字符串 + 函数名
delattr 删除类的属性或者实例拥有的变量和属性 参数:object + 字符串


技术分享






技术分享


#!/usr/bin/env python
import sys
class webServer(object):
def __init__(self,host):
self.host = host
def start(self):
print("Server is starting ...")
def stop(self):
print("Server is stoping... ")
def restart(self):
self.stop()
self.start()
def testRun(name):
print("running man ...",name)
if __name__ == ‘__main__‘:
server = webServer(‘localhost‘)
hasattr(server,sys.argv[1])
func = getattr(server,sys.argv[1])
func()
setattr(server,‘run‘,testRun)
server.run(‘alex‘)
delattr(webServer,‘start‘)
print(server.restart())



E:\pycharm_python\s12\day7>python3 反射.py restart
Server is stoping...
Server is starting ...
running man ... alex
Server is stoping...
Traceback (most recent call last):
File "<decoding error>", line 23, in <module>
File "<decoding error>", line 12, in restart
AttributeError: ‘webServer‘ object has no attribute ‘start‘



############################################################################


socket



技术分享




socket server socket() -- > bind() -- > listen() -- > accept() -- > receive() -- > sendall()
socket client socket() -- > connect() -- > receive() -- > sendall()

技术分享



技术分享









PYTHON之路(七)

标签:

原文地址:http://www.cnblogs.com/joey251744647/p/5269444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!