动态调用几乎所有函数作为方法

pseudomethod的Python项目详细描述


################################################################################
这是一个纯python3.0模块。
pseumethod是python3.0的扩展语言特性。
它添加了"."符号,用于将常规函数作为方法调用。
这允许您动态扩展任何类或对象,而不需要子类化
&;增强了python的函数式编程能力。
py3to2应用中大量使用的假性方法
(http://pypi.python.org/pypi/asciiporn) < BR>
方法通常由"."符号调用: < BR>
foo类:
定义方法(self,*args,**kwds):

foo().方法(*args,**kwds) < BR>
pseudomethod允许您动态调用正常函数作为方法
使用"."符号: < BR>
def函数(self,*args,**kwds):

foo类:通过
foo()…函数(*args,**kwds)35;函数临时绑定到foo < BR>
函数对伪方法的唯一要求是它必须接受
@至少有一个参数(它传递给b的self/type对象临时绑定)。 < BR>
实际发生的只是简单的符号重新排列: < BR>
a(b,*args,**kwds)<;==>;b..a(*args,**kwds)
a(b(c(d)))<;==>;d..c()..b()..a() < BR>
在这方面,"."符号可以被认为是一个"扁平化器",
删除第一个参数的嵌套,允许
python中的函数式编程 < BR>
对于使用pseumethod的实际应用程序,请查看py3to2
应用程序asciiporn@: < BR>
http://pypi.python.org/pypi/asciiporn < BR> 作者:作者:
朱凯
kaizhu256@gmail.com < BR>
要求:
-蟒蛇3.0或更高
-对于python2.6,请参见py3to2(默认情况下启用了伪方法) < BR>
安装:
python3.0 setup.py安装
python3.0 setup.py dev—快速测试 < BR>
API:
键入"help(pseumethod)"了解更多详细信息
伪方法模块:
-语法分析器-伪方法语法的字符串和ast语法分析器
-导入程序-用于处理包含pseumethod的脚本的导入挂钩
语法 < BR> 魔法
1伪方法首先初始化导入挂钩
2添加魔线: < BR>
从"未来"导入伪方法 < BR>
到您的脚本&;导入挂钩将处理其余部分 < BR> 用法:
启动python3.0解释器并导入pseumethod:
$python3.0美元 < BR>
python 3.0rc2(r30rc2:671142008年11月9日,21:30:06)
[GCC 3.4.6 20060404(红帽3.4.6-10)]
有关详细信息,请键入"帮助"、"版权"、"信用"或"许可证"。
>;>;
>>gt;导入伪方法 < BR>
试试这个简单的伪方法脚本:
################################################################

从"未来"导入伪方法 < BR>
def add_to_self(self,x):返回self+x < BR>
打印(
"ab"。将"u"添加到"u self"("c"),
bytearray(b"ab")…将"u"添加到"u self(b"c"),
1..将"u"添加到"u self(2)",
[1,2]…将"u"添加到"u self"([3]), < BR>
################################################################
>;>;
>>gt;导入伪方法ex1
abc bytearray(b'abc')3[1,2,3] < BR>
对于函数式编程,
伪方法对于清理丑陋的嵌套参数非常有用:
################################################################

从"未来"导入伪方法 < BR>
丑,丑,丑!!!!
打印(
列表(
拉链(
已排序( < BR>[(2,3),(0,4),(1,5)],
键=lambda x:x[0]

范围(2,5)

) < BR>< BR>
优雅^^
[(2,3),(0,4),(1,5)]..排序(key=lambda x:x[0])。\
压缩(范围(2,5)).\
…列表()。\
打印()
################################################################
>;>;
>>gt;导入伪方法ex2
[(0,4,2),(1,5,3),(2,3,4)]
[(0,4,2),(1,5,3),(2,3,4)]
>;>; < BR>
################################################################################
机构:
1此模块安装导入挂钩,以检测脚本是否包含
魔术线:
从"未来"导入伪方法
2脚本已准备就绪,将替换"..notation w/"伪方法。
让python解析器满意
3脚本被编译为ast对象。递归搜索ast
对于发生符号重排的属性"uu pseumethod_uu"。 < BR>
最近的更改:
20081219
-Tobias Rodaebel指出"."也用于相对进口。
修复了与此兼容的伪方法2 b
-删除了解析器不允许使用关键字"伪方法"的限制
在脚本中
20081121创建了伪方法包

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何找到数组索引的位置和最小值?   运行索引时使用java。jsp,我犯了很多错误   java如何在堆上实现heapSort?   java将图像从flask服务器发送到安卓应用程序   java Wildfly无法在会话关闭后自动释放到池的数据源连接   使用ElasticSearch的java JHipster   Java内核32。读取文件错误(字节缓冲无法转换为字节[])   string Java,一个我无法理解的返回方法   来自Java的UDP消息仅在第一次运行时接收   java同步在TimerTask中失败   java如何将两个字体大小不同的文本视图居中   netbeans如何获取java。朗;从类加载器初始化,而不是编译文件*。JAVA   java向JCheckBox的ArrayList添加ItemListeners