如何装饰一堂课?
在Python 2.5中,有没有办法创建装饰类的装饰器?具体来说,我想使用装饰器将成员添加到类中,并更改构造函数以获取该成员的值。
寻找类似以下的内容(在“ Foo类:”上存在语法错误:
def getId(self): return self.__id
class addID(original_class):
def __init__(self, id, *args, **kws):
self.__id = id
self.getId = getId
original_class.__init__(self, *args, **kws)
@addID
class Foo:
def __init__(self, value1):
self.value1 = value1
if __name__ == '__main__':
foo1 = Foo(5,1)
print foo1.value1, foo1.getId()
foo2 = Foo(15,2)
print foo2.value1, foo2.getId()
我想我真正想要的是在Python中执行类似C#接口的方法。我想我应该改变我的范式。
-
我的观点是您可能希望考虑一个子类,而不是您概述的方法。但是,不知道您的具体情况,YMMV :-)
您正在考虑的是元类。
__new__
元类中的函数将传递该类的完整建议定义,然后可以在创建类之前将其重写。那时,您可以将构造函数细分为一个新的。例:
def substitute_init(self, id, *args, **kwargs): pass class FooMeta(type): def __new__(cls, name, bases, attrs): attrs['__init__'] = substitute_init return super(FooMeta, cls).__new__(cls, name, bases, attrs) class Foo(object): __metaclass__ = FooMeta def __init__(self, value1): pass
替换构造函数可能有点麻烦,但是语言确实为这种深入的内省和动态修改提供了支持。
-
如何仅在一堂课中制作两种可比较的方法?
2021-01-31 关注 0 浏览71 1答案
-
评价一堂课是否有效的标准是什么?
2022-05-21 关注 0 浏览11 1答案
-
上好一堂课的基本要求有哪些?
2021-04-29 关注 0 浏览73 1答案
-
联系新课程改革的精神,分析一堂课教学的优劣.
2022-05-07 关注 0 浏览16 1答案
-
一般地讲,评价教师一堂课优秀与否的标准有( )。
2022-05-21 关注 0 浏览11 1答案
-
联系实际。你认为一堂课的优劣应从哪些方面进行评价?
2022-05-21 关注 0 浏览10 1答案
-
作为一名新老师,你认为上好一堂课的标准是什么?
2021-04-29 关注 0 浏览96 1答案
-
对一堂课的计划及上课的具体方案,属于教师备课中的哪种教学计划?( )
2021-04-28 关注 0 浏览41 1答案
-
你认为怎样可以提高学生的注意力,使学生可以认真听完一堂课的知识?
2021-09-20 关注 0 浏览73 1答案
-
你认为怎样可以提高学生的注意力,使学生可以认真听完一堂课的知识?
2022-03-09 关注 0 浏览20 0答案