File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -381,3 +381,10 @@ STATIC mp_obj_t mp_builtin_id(mp_obj_t o_in) {
381381}
382382
383383MP_DEFINE_CONST_FUN_OBJ_1 (mp_builtin_id_obj , mp_builtin_id );
384+
385+ STATIC mp_obj_t mp_builtin_getattr (mp_obj_t o_in , mp_obj_t attr ) {
386+ assert (MP_OBJ_IS_QSTR (attr ));
387+ return rt_load_attr (o_in , MP_OBJ_QSTR_VALUE (attr ));
388+ }
389+
390+ MP_DEFINE_CONST_FUN_OBJ_2 (mp_builtin_getattr_obj , mp_builtin_getattr );
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ MP_DECLARE_CONST_FUN_OBJ(mp_builtin_dir_obj);
1212MP_DECLARE_CONST_FUN_OBJ (mp_builtin_divmod_obj );
1313MP_DECLARE_CONST_FUN_OBJ (mp_builtin_eval_obj );
1414MP_DECLARE_CONST_FUN_OBJ (mp_builtin_exec_obj );
15+ MP_DECLARE_CONST_FUN_OBJ (mp_builtin_getattr_obj );
1516MP_DECLARE_CONST_FUN_OBJ (mp_builtin_hash_obj );
1617MP_DECLARE_CONST_FUN_OBJ (mp_builtin_id_obj );
1718MP_DECLARE_CONST_FUN_OBJ (mp_builtin_isinstance_obj );
Original file line number Diff line number Diff line change @@ -60,6 +60,7 @@ STATIC const mp_builtin_elem_t builtin_object_table[] = {
6060 { MP_QSTR_divmod , (mp_obj_t )& mp_builtin_divmod_obj },
6161 { MP_QSTR_eval , (mp_obj_t )& mp_builtin_eval_obj },
6262 { MP_QSTR_exec , (mp_obj_t )& mp_builtin_exec_obj },
63+ { MP_QSTR_getattr , (mp_obj_t )& mp_builtin_getattr_obj },
6364 { MP_QSTR_hash , (mp_obj_t )& mp_builtin_hash_obj },
6465 { MP_QSTR_id , (mp_obj_t )& mp_builtin_id_obj },
6566 { MP_QSTR_isinstance , (mp_obj_t )& mp_builtin_isinstance_obj },
Original file line number Diff line number Diff line change @@ -92,6 +92,7 @@ Q(eval)
9292Q (exec )
9393Q (filter )
9494Q (float )
95+ Q (getattr )
9596Q (hash )
9697Q (id )
9798Q (int )
Original file line number Diff line number Diff line change 1+ class A :
2+
3+ var = 132
4+
5+ def __init__ (self ):
6+ self .var2 = 34
7+
8+ def meth (self , i ):
9+ return 42 + i
10+
11+
12+ a = A ()
13+ print (getattr (a , "var" ))
14+ print (getattr (a , "var2" ))
15+ print (getattr (a , "meth" )(5 ))
You can’t perform that action at this time.
0 commit comments