澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

【澳门普京娱乐网址】装饰器路由具体实现梳理

来源:http://www.bhtsgq.com 作者:计算机知识 人气:160 发布时间:2019-05-11
摘要:from functools import partial, wrapsclass Staticmethod(object): def __init__(self, function): wraps(function)(self) def __get__(self, instance, owner): return partial(self.__wrapped__)class ClassMethod(object): def __init__(self, func): wra

澳门普京娱乐网址 1

from functools import partial, wraps

class Staticmethod(object):
    def __init__(self, function):
        wraps(function)(self)

    def __get__(self, instance, owner):
        return partial(self.__wrapped__)


class ClassMethod(object):
    def __init__(self, func):
        wraps(func)(self)

    def __get__(self, instance, owner):
        return partial(self.__wrapped__, owner)


class Property(object):
    def __init__(self, fget=None, fset=None, fdel=None):
        self.fget = fget
        self.fset = fset
        self.fdel = fdel

    def __get__(self, instance, owner):
        if instance is None:
            return self
        if not callable(self.fget):
            raise AttributeError('not callable')
        return self.fget(instance)

    def __set__(self, instance, value):
        if instance is None:
            return self
        if not callable(self.fset):
            raise AttributeError('not callable')
        print('call me')
        return self.fset(instance, value)

    def setter(self, fset):
        self.fset = fset
        return self

    def deleter(self, fdel):
        self.fdel = fdel


class Hello(object):
    def __init__(self, x):
        self.x = x

    @Staticmethod
    def hello(*args, **kwargs):
        print('static method')

    def bar(*args, **kwargs):
        print(args)

    @staticmethod
    def abc(*args, **kwargs):
        print(args)
        print(kwargs)
        print('abc')

    @classmethod
    def foo(cls):
        print(cls)
        print('class method')

    @ClassMethod
    def zzz(klass, *args, **kwargs):
        print(klass)
        print(args)
        print(kwargs)

    @Property
    def yyy(self):
        print('yyy', self.x)

    @yyy.setter
    def yyy(self, value):
        self.x = value
        print(self.x)

    # abc = yyy.setter(abc)


    # yyy = Property(fget=yyy,fset=None,fdel=None)

h = Hello(123)
h.hello()
h.abc(1,2, a='a', b='b')
h.foo()
h.bar(1,2,3)
h.zzz(12,3, test='test')
h.yyy
h.yyy = 10
h.yyy
============output==========
static method
(1, 2)
{'a': 'a', 'b': 'b'}
abc
<class '__main__.Hello'>
class method
(<__main__.Hello object at 0x054E6F70>, 1, 2, 3)
<class '__main__.Hello'>
(12, 3)
{'test': 'test'}
yyy 123
call me
call------------
10
yyy 10

那大家率先步再来深化一下路由的定义

  • 我们类比一下 大家说三个世界地图,有多少个陆上,大洲下边是国家,国家上边还有省、市、县、村这么分下去
![](https://upload-images.jianshu.io/upload_images/5979706-74955bc6cac979b9.png)

世界地图
  • 类比到大家路由中,世界地图正是主页World,世界上边还有澳大那格浦尔(Australia),那就是World/Asia,那中华夏族民共和国就是World/Asia/China,就像此分下去
![](https://upload-images.jianshu.io/upload_images/5979706-f30edde746c823a5.png)

类比的路由
  • 那大家的路由呢其实便是近似于大家的地址,种种页面包车型大巴地方,南美洲/中国/四川,恐怕是/user/list/edit 那么清楚了路由那些类比关系,我们就会说说路由怎么配

  • 【澳门普京娱乐网址】装饰器路由具体实现梳理,路由概念梳理。第一大家就须要对自个儿的页面,有三个定义,画出2个网址的地图,我们以此管理后台,是还是不是显得二个空窗体,代表全体世界,大家用/来代表,然后在这么些空窗体里面呢,大家有记名页/login、注册页/reg、管理首页/home,然后在管理首页我们用一个地点来放大家的显要内容,比方用户列表/home/userList 圈子列表 /home/groupList,对吗那样有个网址地图,然后大家就能够先去写咱俩的页面了,比方我们写了注册页,这几个登6页,写个主页,写了用户列表,然后大家供给在路由里布置他们,把他们连接起来

  • 这怎么衔接起来呢,这里就能拉拉扯扯到JS(ES陆)的语法以及Vue的法则,大家一向在用import来引进各样零部件,那个正是ES63个要命好的特征,辅助大家便捷的分块的编纂代码在独家引进。

  • 咱俩说咱俩在main.js里实例化三个Vue实例

![](https://upload-images.jianshu.io/upload_images/5979706-e86c6f6551e1008c.png)



Vue接受一个{}对象作为参数,对象中有这么几个属性,一是el,就是这个Vue实例的挂载点,这个属于高级内容,不展开,还有就是router,传入一个路由路由的实例化对象,作为Vue实例的路由表和路由配置。
  • 这里的router变量,就是事先创制的三个VueRouter实例,那些实例传入了一个参数 RouterConfig
![](https://upload-images.jianshu.io/upload_images/5979706-0c1bc0e7a2802615.png)
  • 作者们在往前看这几个RouterConfig
![](https://upload-images.jianshu.io/upload_images/5979706-9a00d643fe3fb158.png)
  • 其一是3个我们定义的指标,里面二个本性,八个是mode,是路由的方式,用history情势(不举行),另八个是router,接受二个路由表数组

  • 其一Routers怎么来的呢,大家再往上来看

![](https://upload-images.jianshu.io/upload_images/5979706-a8ea403b88569051.png)
  • 本来那么些是从router.js里import的,那我们开采router.js看看
![](https://upload-images.jianshu.io/upload_images/5979706-41aa3f5c124ebac2.png)
  • 大家从上往下 首先import了须要的东西,那么些前边详细说,然后顶1个贰个称为router的数组(数组用[]),这些数组正是我们平日编辑的路由表,里面是一个2个对象(用{}),每一个对象正是一个同级的页面,比如此处的/和/index,/register正是同级的四个页面,那五个页面其实都以挂在App.vue的router-view下的,那是我们的首先级页面
![](https://upload-images.jianshu.io/upload_images/5979706-ff722552c7ccaf45.png)
  • 接下来大家看/index下边,有个属性叫做children,,正是以此页面包车型客车子页面,接受三个数组,数组里依旧同级的指标页面,就这么拔尖拔尖分下来的

  • 最终,吧那么些routers那一个数组给export出去,正是抛出去了,那就会让main来import了

  • 大家来顺着捋1遍,首先我们制造一个routers的数组,存放路由表,然后创立一个RouterConfig对象,用来存放路由的安排,包蕴路由格局、路由表,然后大家把那几个Config作为参数用来实例化一个VueRouter对象,然后大家再把这些指标作为参数,传给Vue实例。

  • 小编们恰好router.js里的import没有说,大家开始展览说一下。大家正好说大家得以把三个代码段import进来,十分的大的优化了js工程的逻辑。在Vue工程中,大家的.Vue文件正是3个页面,大家在编排一个Vue文件的时候,都会如此写

![](https://upload-images.jianshu.io/upload_images/5979706-6713205141f53481.png)
  • 即使把我们以此页面抛出去了,能给须求的地方去import,那么纵观整个工程,唯有三个地点正真的import了我们写的页面,就是在router.js里,大家把页面import进来,作为三个路由的component属性,便是把三个页面赋给一个路由地址

  • 就此那样一梳理,就开掘为了本人实例化Vue的时候,只传一个路由属性,就能够营造大家那样多页面了

装饰器原理

概念:   装饰器用于装饰有些函数,可以让函数在实行前或奉行后进行有个别操作

@outer:   一、实践outer函数,并将其下部的函数名赋值给outer的参数

       2、将outer的重返值重新赋值给f1

def outer(func):
    def inner():
        print("222")
        print("222")
        r=func()
        print("3333")
        print("3333")
        return r
    return inner
@outer
def f():
    print("000")
r=f()
#1、遇到outer函数放到内存
#2、遇到@outer 执行outer函数,把@outer下面的函数名当做参数执行outer函数,
#3、把outer的返回值inner重新赋值给f
#4、现在执行f()就相当于执行inner
#5、执行inner,先print("222")
#6、再执行func  ,这里的func是原来的函数f()既print("000")
#7、再执行print("333")
#8、返回一个原来函数的返回值r给inner就是现在的f

本文由澳门新葡亰发布于计算机知识,转载请注明出处:【澳门普京娱乐网址】装饰器路由具体实现梳理

关键词: 日记本 python 高级特性 工作学习

上一篇:继承之构造方法,继承与几大关键字

下一篇:没有了

最火资讯