如何在python中扩展内置类?我想在str类中添加一个方法.
我已经做了一些搜索,但我发现的都是较旧的帖子,我希望有人知道更新的东西.
只是对类型进行子类化
>>> class X(str): ... def my_method(self): ... return int(self) ... >>> s = X("Hi Mom") >>> s.lower() 'hi mom' >>> s.my_method() Traceback (most recent call last): File "", line 1, in File " ", line 3, in my_method ValueError: invalid literal for int() with base 10: 'Hi Mom' >>> z = X("271828") >>> z.lower() '271828' >>> z.my_method() 271828
一种方法是使用"类重新打开"概念(本机存在于Ruby中),可以使用类装饰器在Python中实现.本页提供了一个例子:http: //www.ianbicking.org/blog/2007/08/opening-python-classes.html
我引用:
我认为使用类装饰器你可以这样做:
@extend(SomeClassThatAlreadyExists) class SomeClassThatAlreadyExists: def some_method(self, blahblahblah): stuff
像这样实现:
def extend(class_to_extend): def decorator(extending_class): class_to_extend.__dict__.update(extending_class.__dict__) return class_to_extend return decorator