にappriciated問題はMyHandler
は、サブクラスCementBaseHandler
正しくないということであるであろう
from cement.core.foundation import CementApp
from cement.core.interface import Interface, Attribute
from cement.core import interface
from cement.core.handler import CementBaseHandler
def my_validator(klass, obj):
members = [
'_setup',
'do_something',
'my_var',
]
interface.validate(MyInterface, obj, members)
class MyInterface(Interface):
class IMeta:
label = 'myinterface'
validator = my_validator
# Must be provided by the implementation
Meta = Attribute('Handler Meta-data')
my_var = Attribute('A variable of epic proportions.')
def _setup(app_obj):
""" The setup function """
def do_something():
""" This function does something. """
class MyHandler(CementBaseHandler):
class Meta:
interface = MyInterface
label = 'my_handler'
description = 'This handler implements MyInterface'
config_defaults = dict(
foo='bar'
)
my_var = 'This is my var'
def __init__(self):
self.app = None
def _setup(self, app_obj):
self.app = app_obj
def do_something(self):
print "Doing work!"
class MyApp(CementApp):
class Meta:
label = 'myapp'
define_handlers = [MyInterface]
handlers = [MyHandler]
app = CementApp('myapp')
# define interfaces after app is created
app.setup()
print app.config.keys('myapp')
app.config.set('myapp', 'debug', True)
print app.config.keys('myapp')
app.handler.define(MyInterface)
app.handler.register(MyHandler)
app.run()
以下の私のコードを見つけてください。任意の方法は、例えば... super()
とサブ分類する必要があります
class MyHandler(CementBaseHandler):
class Meta:
interface = MyInterface
label = 'my_handler'
description = 'This handler implements MyInterface'
config_defaults = dict(
foo='bar'
)
my_var = 'This is my var'
def __init__(self, *args, **kw):
super(MyHandler, self).__init__(*args, **kw)
# add your code here (if necessary)
def _setup(self, app_obj):
super(MyHandler, self)._setup(app_obj)
# add your code here if necessary
def do_something(self):
print "Doing work!"
お知らせsuper()
を使用してMyHandler.__init__()
とMyHandler._setup()
への変更...これは私のために問題を修正しました。
ご不便をおかけしましたことをお詫び申し上げます。ありがとうございます。ありがとうございます。私はGithubのプロジェクトに次のリリースで修正される問題を追加しました。 http://builtoncement.com/2.10/dev/interfaces_and_handlers.htmlから
参考 – amith