Changeset 1158 for framspy/frams-test-props.py
- Timestamp:
- 10/01/21 23:40:49 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified framspy/frams-test-props.py ¶
r1151 r1158 1 """An example of iterating through the properties of an ExtValue object and printing their characteristics.""" 2 1 3 import frams 2 4 import sys … … 4 6 frams.init(*(sys.argv[1:])) 5 7 6 def printSingleProperty(v,p): 7 print(' %s "%s" type="%s" flags=%d group=%d help="%s"' % (v._propId(p),v._propName(p),v._propType(p),v._propFlags(p),v._propGroup(p),v._propHelp(p))) 8 9 def printSingleProperty(v, p): 10 print(' * %s "%s" type="%s" flags=%d group=%d help="%s"' % (v._propId(p), v._propName(p), v._propType(p), v._propFlags(p), v._propGroup(p), v._propHelp(p))) 8 11 9 12 10 13 def printFramsProperties(v): 11 N=v._propCount() 12 G=v._groupCount() 13 if G<2: 14 15 #no groups, simply iterate all props 16 17 print("'%s' has %d properties" % (v._class(),v._propCount())) 14 N = v._propCount() 15 G = v._groupCount() 16 print("======================= '%s' has %d properties in %d group(s). =======================" % (v._class(), N, G)) 17 if G < 2: 18 # No groups, simply iterate all properties 18 19 for p in range(v._propCount()): 19 printSingleProperty(v,p) 20 20 printSingleProperty(v, p) 21 21 else: 22 23 #iterate through groups and iterate all props in a group. 24 #why the distinction? 25 #first, just to show there are two ways. there is always at least one 26 #group so you can always get all props by iterating the group. 27 #second, groups actually do not exist as collections. iterating in 28 #groups works by checking all properties on each iteration and 29 #testing which one is the m-th property of the group. 30 #these inefficient _memberCount() and _groupMember() are provided 31 #for the sake of completeness but don't use them without good reason ;-) 32 33 print("'%s' has %d properties in %d group(s)" % (v._class(),v._propCount(),v._groupCount())) 22 # Iterate through groups and iterate all props in a group. 23 # Why the distinction? 24 # First, just to show there are two ways. There is always at least one 25 # group so you can always get all properties by iterating the group. 26 # Second, groups actually do not exist as collections. Iterating in 27 # groups works by checking all properties on each iteration and 28 # testing which one is the m-th property of the group! 29 # So these inefficient _memberCount() and _groupMember() are provided 30 # for the sake of completeness, but don't use them without a good reason ;-) 34 31 for g in range(G): 35 print('\n =========== Group #%d: %s ==========' % (g,v._groupName(g)))32 print('\n------------------- Group #%d: %s -------------------' % (g, v._groupName(g))) 36 33 for m in range(v._memberCount(g)): 37 p=v._groupMember(g,m) 38 printSingleProperty(v,p) 39 print('========================\n') 40 41 34 p = v._groupMember(g, m) 35 printSingleProperty(v, p) 36 print('\n\n') 42 37 43 38 44 39 printFramsProperties(frams.World) 45 46 printFramsProperties(frams.GenePools[0].add('X')) 40 41 printFramsProperties(frams.GenePools[0].add('X')) # add('X') returns a Genotype object
Note: See TracChangeset
for help on using the changeset viewer.