组合模式
我们把Composite模式看成一个复杂的属性结构,其实基本有三种角色:树干(定义一些操作树叶leaf的操作),树枝(树干上有很多树枝)和树叶(树干想要具体操作的对象) ,Composite模式帮我们实现:即它们在充当对象的时候,还是其他对象的容易,从而提供一致性
python的例子
class Trunk(object): '''树干''' def __str__(self): pass def subtree(self): pass class Composite(Trunk): def __init__(self, left=None, right=None, length=None): self.left=left self.right=right self.length=length def __str__(self): # 这个结果是在调用subtree()的时候返回 if self.length: return "(" + self.left.__str__() + ", " + self.right.__str__() + ")" + ": " + str(self.length) else: return "(" + self.left.__str__() + ", " + self.right.__str__() + ")" # 这里其实就是一个技巧,通过这个函数返回下一级的对象,也就是它既是对象还可以是对象的容器 def subtree(self): return Composite(self.left, self.right) class Leaf(Trunk): '''叶子类,它没办法继续延伸了''' def __init__(self, name, length=None): self.name = name self.length=length self.left = None self.right = None def __str__(self): return self.name + ": " + str(self.length) def subtree(self): return Leaf(self.name, self.length) if __name__ == "__main__": # 只有叶子那么就直接返回__str__的拼装结果 t1 = Leaf('A', 0.71399) print t1 # 有个2个叶子的组合,返回的是2个叶子的对象的组合 t2 = Composite(Leaf('B', -0.00804), Leaf('C', 0.07470)) print t2 # 这个是嵌套的叶子的组合,树干上面有树枝,树枝上面有叶子 t3 = Composite(Leaf('A', 0.71399), Composite(Leaf('B', -0.00804), Leaf('C', 0.07470), 0.1533), 0.0666) print t3 # 直接通过左右节点找到对应的叶子对象了 t4 = t3.right.right.subtree() print t4 # t3的左树其实就是叶子对象了 t5 = t3.left.subtree() print t5
责任链模式
比如我们还在读书的时候,考试的分数都是几个档次,比如90-100分,80-90分,好吧我想做一个根据分数打印你的学习成绩的反馈, 比如90-100就是A+,80-90就是A,70-80就是B+… 当然你可以用很多种方法实现,我这里就来实现一个Chain模式:用一系列的类来响应, 但只有遇到适合处理它的类才会处理,类似与case和switch的作用
python的例子
class BaseHandler: # 它起到了链的作用 def successor(self, successor): self.successor = successor class ScoreHandler1(BaseHandler): def handle(self, request): if request > 90 and request <= 100: return "A+" else: # 否则传给下一个链,下同,但是我是要return回结果的 return self.successor.handle(request) class ScoreHandler2(BaseHandler): def handle(self, request): if request > 80 and request <= 90: return "A" else: return self.successor.handle(request) class ScoreHandler3(BaseHandler): def handle(self, request): if request > 70 and request <= 80: return "B+" else: return "unsatisfactory result" class Client: def __init__(self): h1 = ScoreHandler1() h2 = ScoreHandler2() h3 = ScoreHandler3() # 注意这个顺序,h3包含一个类似于default结果的东西,是要放在最后的,其他的顺序是无所谓的,比如h1和h2 h1.successor(h2) h2.successor(h3) requests = {'zhangsan': 78, 'lisi': 98, 'wangwu': 82, 'zhaoliu': 60} for name, score in requests.iteritems(): print '{} is {}'.format(name, h1.handle(score)) if __name__== "__main__": client = Client()
更多Python的组合模式与责任链模式编程示例相关文章请关注PHP中文网!

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

ThescriptisrunningwiththewrongPythonversionduetoincorrectdefaultinterpretersettings.Tofixthis:1)CheckthedefaultPythonversionusingpython--versionorpython3--version.2)Usevirtualenvironmentsbycreatingonewithpython3.9-mvenvmyenv,activatingit,andverifying

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

useanArray.ArarayoveralistinpythonwhendeAlingwithHomeSdata,performance-Caliticalcode,orinterFacingWithCcccode.1)同质性data:arrayssavememorywithtypedelements.2)绩效code-performance-clitionalcode-clitadialcode-critical-clitical-clitical-clitical-clitaine code:araysofferferbetterperperperformenterperformanceformanceformancefornalumericalicalialical.3)

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactssperformance.2)listssdonotguaranteeconeeconeconstanttanttanttanttanttanttanttanttimecomplecomecomecomplecomecomecomecomecomecomplecomectaccesslikearrikearraysodo。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!