? 云南11选五遗漏查询:员工下班后安全责任书 - ◆昨天云南十一选五开奖◆
  • 中美科学家在三峡地区发现世界最早动物足迹化石 2019-01-27
  • 百公里加速仅3.4s!宝马全新M5于3月22日上市 2018-12-12
  • 云南11选五遗漏查询:python设计模式浅析

    昨天云南十一选五开奖 www.wahbn.com 小说:员工下班后安全责任书作者:卓石董北更新时间:2019-02-21字数:49759

    以战斗风格而论,拥有蓝电霸王龙武魂的他,无疑和戴沐白一样,都是强攻中的强攻。在蓝电霸王龙家族每一名直系子弟的血液中,都流淌着充满攻击性的血液。进攻就是最好的防御,只有进攻,才能最直接的击溃对手。

    解封微信50一单的商家

    一来,二最近人气实在太高,完全不亚于四大天王中的任何一位。而四大天王中,江之然和郑维最常被人拿来与二作比较。
    血肉每一次的重生精神意志和精气神随之不断提升,这样的话完全能做到哪怕不灭真气消耗干净,可是血肉本来就是不灭真气淬炼而不断重生的。

    “沙基拉这样会不会有危险啊?!鼻且劣械悴环判牡目醋派郴?,这是她看着长大的小精灵,一手一脚照顾的平时都是,也是最早认识的,当然不希望有事,在沙基拉实验结束之后刘皓就将关于自己的一些事情还有一些必须完成的任务避轻就重的告诉了乔伊。

    今天简单聊聊python的设计模式,GOF设计模式(c++)和Head first design pattern(Java)是两本设计模式的经典,基本可以照搬在python上面,但是你会发现python有很多它特有的东西,比如它并没有多个构造函数,相对应的它有classmethod,所以python设计模式还是有值得聊聊的地方。

    构造函数:

    python2:

    class Person(object):
        def __init__(self, name):
            self.name = name

    python3:

    class Person:
        def __init__(self, name):
            self.name = name

    调用的时候不需要用new,person = Person("xiaozhang")。所有的class都从object继承,python2需要显式而python3都帮你弄好了。继承与object有很多好处,一个好处就是super()。python3 可以直接通过super().parent_method()调用父类的方法而python2需要super(子类名字,self).parent_method()

    继承

    class Animal:
        def __init__(self, name):
            self.name = name
    
    class Dog(Animal):
        pass
    
    class Cat(Animal):
        pass
    >>> animal = Dog("dodo")
    >>> animal.name
    "dodo"
    >>> isinstance(animal, Animal)
    True
    >>> isinstance(animal, Dog)
    True
    >>> isinstance(animal, Cat)
    False

    isinstance 可以用来check object types。

    Override

    >>> class Animal:
    ...     sound = ""
    ...     def speak(self):
    ...             print("The animal says: " + self.sound)
    ... 
    >>> class Dog(Animal):
    ...     sound = "WangWang!"
    ... 
    >>> class Cat(Animal):
    ...     sound = "MiaoMiao"
    ... 
    >>> class Turtle(Animal):
    ...     pass
    ... 
    >>> Dog().speak()
    The animal says: WangWang!
    >>> Cat().speak()
    The animal says: MiaoMiao
    >>> Turtle().speak()
    The animal says: 

    python不支持方法重载,有些语言比如c++,java可以定义多个同名函数只要参数类型不同即可,python则不可以,后面定义的会覆盖前面定义的方法如果有多个同名方法。

    私有类型

    python没有访问控制,习惯是用self._something表示这东西是私有的请不要直接获取它,然而你可以随便拿。

    你也可以使用__,python会mangle这个变量__something为_classname__something,如果知道这层name mangling你还是可以获取它。

    设计模式之read only

    python有一个decorator叫做property,加了property的方法,只能读,不能写。如果你想写,要额外加被decorate的方法名.setter。setter里可以做一些input check。有了property我们就可以创造性的refactor一些类。

    设计模式之pub-sub

    import os
    import time
    
    class FileWatcher(object):
        def __init__(self, path_of_file_to_watch):
            self.path = path_of_file_to_watch
            self.observers = set()
        def register(self, name):
            self.observers.add(name)
        def unregister(self, name):
            self.observers.discard(name)
        def notify(self, message):
            for i in self.observers:
                i.update(message)
    
    class FileObserver(object):
        def __init__(self, name):
            self.name = name
        def update(self, message):
            print "%s noticed that the file is now %d bytes" % (self.name, message)
    
    filename = "/tmp/test.txt"
    f = FileWatcher(filename)
    bob = FileObserver("bob")
    john = FileObserver("john")
    stacy = FileObserver("stacy")
    f.register(bob)
    f.register(john)
    f.register(stacy)
    
    init_size = os.stat(filename).st_size
    while True:
        if os.stat(filename).st_size != init_size:
            f.notify(os.stat(filename).st_size)
            init_size = os.stat(filename).st_size
        time.sleep(1)

    classmethod模式

    def __init__(self, something):
        ***
    
    @classmethod
    def some_alternative_constructor(cls, some_other_thing):
        ***
        something = some_other_thing balbla
        return cls(something)

    调用的时候直接用类名.另一个构造函数,返回需要的对象。直接适用于子类。

    staticmethod

    相当于定义函数,不用加self 啦,cls啦,相当于直接写function,然后可以用类名直接调用。

    编辑:陵秉纯开

    发布:2019-02-21 11:57:24

    当前文章://www.wahbn.com/news/201810/23/content_60704.html

    如何开一个淘宝店 淘宝客一般有多少佣金 已卖商品佣金什么看 2018什么游戏赚钱 qq群网赚 uc浏览器福利版赚钱 干什么可以快速赚钱 聚享游打码赚钱步骤

    52047 67666 42588 83384 34005 8430515292 17198 29522

    我要说两句: (0人参与)

    发布
  • 中美科学家在三峡地区发现世界最早动物足迹化石 2019-01-27
  • 百公里加速仅3.4s!宝马全新M5于3月22日上市 2018-12-12