正文内容加载中...
posted @ 2012-10-07 16:19 紫红的泪 阅读(1198) 评论(0) 推荐(0) 编辑
摘要: 写带参数的函数装饰器最纠结的是需要包好多层,最外层是接收参数的函数,它返回一个接收函数的的函数。但这样有个问题是,最终包装出来的装饰器必须加()调用一下,即使没有参数也需要这样做,因为调用这个最外层函数才能返回里面装饰器(就是接收函数的函数)。以前一篇为例,可以这样改进: def opt_arguments(func): def meta_wrapper(*args, **kwargs): i... 阅读全文
posted @ 2014-04-02 20:34 紫红的泪 阅读(1246) 评论(0) 推荐(0) 编辑
摘要: 有时候把Python函数调用的命名参数都收集到一个dict中可以更方便地做参数检查,或者直接由参数创建attribute等。更简单的理解就是def foo(*args, **kwargs): pass可以接受所有的参数,其中kwargs就是命名参数字典,那么直接在函数外面套个foo却不能达到目的,一个比较简单的实现是这样的: def annotation(**annotations): """ ... 阅读全文
posted @ 2014-04-02 14:36 紫红的泪 阅读(2655) 评论(0) 推荐(0) 编辑
摘要: 使用场景有很多,比如C API在Python下很多都变成了(*args, **kwargs)的参数,这时候可能需要为其添加一个更严格签名来约束参数。 查了许多资料,能有效的拷贝函数签名貌似只能通过动态创建具有新签名的包装函数。使用这一技术的典型范例就是decorator库:https://pypi.python.org/pypi/decorator 下面就根据decorator来实现一个拷贝函... 阅读全文
posted @ 2014-03-28 15:01 紫红的泪 阅读(2465) 评论(0) 推荐(0) 编辑
摘要: 想搞一个对象继承自str,然后存一些额外信息用来标识这个字符串,然后理所当然地重写了__init__发现跪了: class newstring(str): def __init__(self, value, othervalue): str.__init__(self, value) self.othervalue = othervalueastring = newstring('hello... 阅读全文
posted @ 2014-03-24 11:56 紫红的泪 阅读(3764) 评论(2) 推荐(0) 编辑
摘要: 在某次BugFix中,某哥们儿在/helper/pycharm/tcunittest.py加了个这: 各位亲们可以把True改为False即可解决大量空行的问题。 阅读全文
posted @ 2014-01-28 15:01 紫红的泪 阅读(1300) 评论(0) 推荐(0) 编辑
摘要: 我们发现PyQt做的Python版的PyQt是如此好用,如果想把自己的C++库包装成Python模块该如何实现呢? 这里介绍下用SIP包装C++库时值得参考的功能实现: 需要Python模块中实现C++的多态指针类型自动转型为实际类型: 例如:AbstractItem *getItem(); // 这里返回值可能是任何一个子类对象指针,但是在SIP包装后,始终返回AbstractItem对象,... 阅读全文
posted @ 2014-01-27 10:44 紫红的泪 阅读(1966) 评论(0) 推荐(0) 编辑
摘要: # helper class defined elsewhereclass CallLogger(object): def __init__(self, meth): self.meth = meth self.was_called = False def __call__(self, code=None): self.meth() self.was_cal... 阅读全文
posted @ 2013-09-22 18:06 紫红的泪 阅读(2802) 评论(0) 推荐(1) 编辑
摘要: 访问顺序: 实例的__getattribute__()、Descriptor的__get__()、实例的__dict__、只读Descriptor的__get__()、实例的__getattr__(); 实例的__setattr__()、Descriptor的__set__()、实例的__dict__; 实例的__delattr__()、Descriptor的__delete_... 阅读全文
posted @ 2013-09-22 13:12 紫红的泪 阅读(299) 评论(0) 推荐(0) 编辑
摘要: Enclose in parentheses: except (IDontLIkeYouException, YouAreBeingMeanException) as e: passSeparating the exception from the variable with a comma will still work in Python 2.6 and 2.7, but is now... 阅读全文
posted @ 2013-09-18 14:45 紫红的泪 阅读(592) 评论(0) 推荐(0) 编辑
摘要: Use __new__ when you need to control the creation of a new instance. Use __init__ when you need to control initialization of a new instance. __new__ is the first step of instance creation. It's ... 阅读全文
posted @ 2013-09-18 11:35 紫红的泪 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 发现找不到matplotlib.sphinxext.mathmpl: 可以直接easy_install matplotlib,也可以去这里下载安装包 发现exception: matplotlib requires dateutil错误: 到这里找dateutil安装包(坑爹的easy_install里找不到这个包) 发现exception: matplotlib requ... 阅读全文
posted @ 2013-09-18 11:32 紫红的泪 阅读(2028) 评论(0) 推荐(0) 编辑
摘要: 桌面下高速文件搜索软件:Listary Pro(收费)和Everything(开源免费),Everything推荐Beta版,明显比老旧的稳定版好用。 桌面太乱,可以试试Fences(收费)。 需要文件同步,Windows下的cwRsync(免费)相当好用,有服务器端和客户端两部分,分享下带扩展名过滤的rsyncd.conf配置文件: use chroot = fals... 阅读全文
posted @ 2013-09-01 14:15 紫红的泪 阅读(867) 评论(1) 推荐(0) 编辑
摘要: 一句话,把Property和Descriptor作用在同一个名字上,就只有Property好使。 阅读全文
posted @ 2013-07-29 17:09 紫红的泪 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 在链接Qt的库,比如QtGui4.lib,我这里是在链接QtSolutions_PropertyBrowser-head.lib的时候出现的链接错误。大概是说一个“XXXX::staticMetaObject”的函数找不到定义。解决办法是,在include该Qt库的头文件时定义“__declspec(dllimport)”,对于QtSolutions_PropertyBrowser-h... 阅读全文
posted @ 2013-06-20 15:44 紫红的泪 阅读(1636) 评论(0) 推荐(0) 编辑
摘要: 在安装traits的时候,发现居然出错了。后来发现安装版的Python 2.7搜索的是Visual Studio 2008,好吧,我电脑里2010和2012都有,真心不想再装个2008。so,先用2012工具链编译吧: 好吧,自己试用的时候这么玩玩就算了,实际产品中一定要用对应版本的编译器。 阅读全文
posted @ 2013-06-13 15:11 紫红的泪 阅读(4061) 评论(1) 推荐(1) 编辑
摘要: 从C系语言过来用Python,好不容易适应了写代码不打花括号,突然有一天发现它居然木有枚举……于是stackoverflow了一把,发现神人的枚举(enum)实现到处都是,于是汉化总结过来。 如果是新版Python用户(Python 3.4 with PEP 435): from enum import EnumAnimal = Enum('Animal', 'ant bee ca... 阅读全文
posted @ 2013-05-31 16:44 紫红的泪 阅读(64909) 评论(2) 推荐(9) 编辑
摘要: 在Unity3D中,可能有这种需求:想实例化一个prefab,而该prefab又不在场景中。这时需要在Assets下建立Resources文件夹,然后把需要实例化的prefab拖入该文件夹中。最后在代码中这样实例化: Instantiate(Resources.Load("PrefabName"), position, rotation) 阅读全文
posted @ 2013-05-31 14:38 紫红的泪 阅读(17235) 评论(0) 推荐(0) 编辑
摘要: 简单来讲,就是 用GUI.SetNextControlName为该行代码的下一句控件设置名字 GUI.FocusControl来把焦点设置到某控件上,这里将用到上一步设置的名字 用GUI.GetNameOfFocusedControl来获得焦点控件的名字。 示例代码1: GUI.SetNextControlName("Text1");text1 = GUILayout.Tex... 阅读全文
posted @ 2013-05-31 14:31 紫红的泪 阅读(9893) 评论(0) 推荐(0) 编辑
摘要: 用C#传输字符串,比如在Unity3D中做网络通信,字符串string需要转为byte[]才能够传输。同样,收到的byte[]要转为string才能使用。这里提供一种根据编码简单转换方法: static public byte[] GetBytes(string str){ return Encoding.ASCII.GetBytes(str.ToCharArray());}static ... 阅读全文
posted @ 2013-05-31 14:11 紫红的泪 阅读(8878) 评论(0) 推荐(0) 编辑
摘要: 对于str类型,python并没有reverse函数。然而,通过反向步进切片,我们可以高效地反转一串字符串。 s = 'abcde' s[::-1] 好吧,只支持英文字符。 阅读全文
posted @ 2013-05-31 11:44 紫红的泪 阅读(21048) 评论(0) 推荐(1) 编辑