python向类添加方法

python向类添加方法,第1张

设想一种情况,有一个类,随着应用需求的增加,类中方法需要不断增加。当然也可以用继承来拓展方法。但python其实可以直接向类中添加方法。主要实现方法是使用装饰器,对类进行方法添加。以下是python3中的实现:

迭代器的用法在 Python 中普遍而且统一。在后台,for 语句在容器对象中调用 iter() 。 该函数返回一个定义了 next() 方法的迭代器对象,它在容器中逐一访问元素。没有后续的元素时,next() 抛出一个 StopIteration 异常通知 for 语句循环结束。 

了解了迭代器协议的后台机制,就可以很容易的给自己的类添加迭代器行为。定义一个 __iter__() 方法,使其返回一个带有 next() 方法的对象。如果这个类已经定义了 next(),那么 __iter__() 只需要返回self。 

以下是其工作原理的示例: 

Python代码 

class Reverse: 

"Iterator for looping over a sequence backwards" 

def __init__(self, data): 

self.data = data 

self.index = len(data) 

def __iter__(self): 

return self 

def next(self): 

if self.index == 0: 

raise StopIteration 

self.index = self.index - 1 

return self.data[self.index] 

Python代码 

for char in Reverse('spam'): 

print char

希望能帮到你!

使用方法:

class A(object):  

    def foo(self,x):  

    #类实例方法  

        print "executing foo(%s,%s)"%(self,x)  

 

    @classmethod  

    def class_foo(cls,x):  

    #类方法  

        print "executing class_foo(%s,%s)"%(cls,x)  

 

    @staticmethod  

    def static_foo(x):  

    #静态方法  

        print "executing static_foo(%s)"%x

调用方法:

a = A()  

a.foo(1)     //print   : executing foo(<__main__.A object at 0xb77d67ec>,1)

  

a.class_foo(1)    //executing class_foo(<class '__main__.A'>,1)  

A.class_foo(1)    //executing class_foo(<class '__main__.A'>,1)  

  

a.static_foo(1)    //executing static_foo(1)  

A.static_foo(1)   //executing static_foo(1)

类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用。

类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/7992985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存