老早就写了这些代码,但一直懒得为它写篇博客,我觉得我永远也无法理解为什么会有人发明这种奇怪的东西。
不过终于还是决定写一篇吧,多一点有意思的代码也许能吸引更多人对 python 的兴趣呢,呵呵。虽然我对 ruby 的这个东西有许多贬义词想说,不过想想既然有人用,也就应该有其理由吧。
且看代码:
def update( klass, bases, attrs ):
for k,v in attrs.items():
if not k.startswith('__') or not k.endswith('__'):
setattr(klass, k, v)
if bases:
klass.__bases__ = bases
return klass
class Meta(type):
def __new__(cls, klass, bases, attrs):
try:
return update( globals()[klass], bases, attrs )
except KeyError:
return type.__new__(cls, klass, bases, attrs)
# test
__metaclass__ = Meta
# test simple
class A:
def say(self):
print 'hi'
a = A()
a.say() # hi
class A:
def say(self):
print 'ho'
def new_func(self):
print 'new'
a.say() # ho
a.new_func() # new
# test inherit
#del A
#class A:
#def say(self):
#print 'hi'
#a = A()
#a.say() # hi
#class B:
#def say(self):
#print 'ho'
#class A(B):
#def say(self):
#super(A, self).say()
#a.say() # ho
update: 很遗憾,测试发现 new style class 貌似还有个
bug 。所以把后面部分注释了先,不知道 python2.5 怎么样。
分享到:
相关推荐
虽然Ruby和Python都属于高级动态语言,但它们之间仍存在一些差异: - **语法风格**:Ruby的语法更加灵活,允许更多的表达方式;而Python则强调代码的一致性和可读性。 - **社区文化**:Ruby社区更倾向于快速开发和...
- **脚本能力**:Ruby可以作为一种强大的脚本语言使用,适用于快速原型开发。 - **可扩展性**:通过C语言扩展,Ruby可以轻松地与其他语言集成。 ##### §1.4 Ruby和Python的比较 - **相似之处**:两者都注重代码的...
- **使用Ruby**:直接在命令行中输入`ruby filename.rb`来运行脚本文件。 - **使用IDE**:推荐使用FreeRIDE或SciTE等集成开发环境,提供更好的编辑体验。 **2.3 Ruby-irb** IRB(Interactive Ruby Shell)是一个...
- **使用Ruby解释器**:直接通过命令行运行Ruby脚本。 - **使用IDE**:例如FreeRIDE、SciTE等,提供更友好的编程界面。 - **使用fxri**:用于查看文档和API信息。 **2.3 Ruby-irb** irb是Ruby的交互式Shell,可...
Open Flash Chart是一款开源的Flash图表库,它允许开发者使用简单的JavaScript和服务器端语言(如PHP、Python、Ruby等)创建高质量、自定义化的图表。这个教程将围绕Open Flash Chart的基本用法展开,帮助你理解如何...
在本篇文章中,我们将详细介绍Python标准库中的关键模块及其功能,帮助读者更好地理解和使用这些强大的工具。通过深入学习这些模块,读者不仅能够提高编程效率,还能进一步拓展Python的应用领域。 #### 二、核心...
- Ruby提供丰富的文件I/O API,如 `File.open`,`File.read`,`File.write` 等。 9. **正则表达式** - Ruby内置正则表达式支持,用于文本匹配和替换。 10. **Gem** - Ruby的库管理工具,类似于其他语言的包管理...
对于Python而言,我们需要使用Thrift来生成Python客户端代码,从而能够与HBase服务通信。 - 下载并解压Thrift源码包,例如使用`thrift-0.7.0-dev.tar.gz`。 - 进入解压后的目录,执行配置命令: ```bash sudo ....
2. `demoservice.js`、`demoservice.rb`、`demoservice.py`:这些文件可能是服务端脚本,分别使用JavaScript、Ruby和Python编写。它们可能实现了OFLADemo的核心功能,如处理客户端请求、提供流媒体服务等。 3. `...
它的核心功能在于允许程序员使用多种编程语言(如Java、Python、Ruby等)编写测试脚本,然后通过Selenium Server与浏览器进行交互,实现网页的自动化操作。以下将详细介绍如何使用Selenium RC。 首先,你需要获取...
qw matrix # opens ruby's matrix class in your editor qw rails # will ask you which version of rails you want to open qw activerec 3.1 # will find the gem activerecord 3.1 and open it 您还可以将 ...
脚本语言,比如Python、JavaScript、Perl、Ruby等,与编译型语言(如C++、Java)不同,它们通常不需要预编译步骤,而是直接由解释器逐行执行。这使得脚本语言更适合快速开发和原型设计。 1. **变量和数据类型**:在...
例如,使用`Class.forName()`加载驱动,`DriverManager.getConnection()`建立连接。 2. **.NET ADO.NET** .NET Framework中的ADO.NET提供了连接、命令、数据适配器和数据集等组件,用于与SQL Server、Oracle等...
IDE 使用 JavaScript 记录用户的浏览器交互,然后将这些交互转换为可读性强、易于维护的脚本,支持多种编程语言,如 Java、C#、Python 和 Ruby。此外,Selenium IDE 还具有回放功能,可以方便地测试脚本的有效性。 ...
首先,你需要知道类的全名,然后通过`ClassLoader`加载该类,最后读取对应的`.class`文件。由于Java的源代码通常不随可执行文件一起发布,所以这种方法更多用于获取编译后的字节码。 3. **JavaScript**: ...
在Java开发中,Thrift是一种高效、跨语言的服务框架,由Facebook开源,现已被Apache基金会维护。...同时,Thrift也支持C++, Python, PHP, Ruby等其他编程语言,为构建分布式系统提供了极大的便利。
Thrift支持多种语言,包括C++, Java, Python, PHP, C#, Ruby等,这使得跨语言服务的开发变得更加容易。同时,Thrift还提供了多种传输层和协议选择,以适应不同的网络环境和性能需求。 总结来说,Thrift是一个强大的...
- **多语言支持**:支持多种编程语言(如 Java、C#、Python 等),方便不同技术背景的开发者使用。 - **多浏览器兼容性**:可以在不同的浏览器(如 Firefox、Chrome、IE)上运行测试脚本,确保应用程序的兼容性。 ...
5. **Python驱动**:Python社区有多种MySQL驱动,如MySQLdb(基于DB-API 2.0)、PyMySQL(纯Python实现,兼容MySQLdb)以及pymysql-cffi(CFFI封装,更快)等。 6. **其他驱动**:MySQL还支持其他编程语言的驱动,...