Hooks, aspect-oriented programming, and design by contract
Pedro Rodriguez
pedro_rodriguez at club-internet.fr
Tue Jan 22 12:27:02 EST 2002
"Gustavo Niemeyer" <niemeyer at conectiva.com> wrote:
>> Hi,
>> maybe I'm just reinventing the wheel, but I just noted that Alex's
>> Aspecter function can easily be twitched to enforce some kind of design
>> by contract (which of course can be considered an aspect). Here's my
>> first shot at it. Corrections and improvements are much welcome.
>
> Here is some code I've written to play around with metaclasses. It may
> give you some ideas.
>
<code snipped for brievety>
How do you set up an attributes in your classes ???
How should a class be initialized ?
Notice that :
- 'print 1' is not executed,
- A is ContractMeta object,
- a is a ContractInstance
Shouldn't there be an initialisation function to be called
when creating a ContractInstance ?
The following extension from your exemple fails because 'x' is not found.
if __name__ == "__main__":
# Usage example
class A(Contract):
def __init__(self, *args):
print 1
Contract(self, *args)
self.x = 0
def invariant(self):
assert self.x == 0
print "invariant()"
def a(self):
self.x = 1
print "a()"
def a_pre(self):
print "a_pre()"
def a_post(self, result):
print "a_post()"
a = A()
a.a()
Regards,
--
Pedro
More information about the Python-list
mailing list