На этапе самоанализа некоторых объектов в коде Python в одном случае я не понимаю результат.Вот фрагмент кода ниже:
def list_outputs(self):
super(Input_Filter, self).list_outputs()
print('\n This is self: ', self) # added for introspection
for i in sorted(dir(self)): # added for introspection
print('- ', i) # added for introspection
print('\n This is self.project: ', self.project) # added for introspection
for i in sorted(dir(self.project)): # added for introspection
print('- ', i) # added for introspection
Полученный результат:
Это self:
<mia_processes.tools.tools.Input_Filter object at 0x7fc22f072db0>
- \__base_traits__
- \__call__
- \__class_traits__
- \__deepcopy__
- \__dir__
- \__doc__
- \__getstate__
- \__init__
- \__init__
- \__instance_traits__
- \__listener_traits__
- \__module__
- \__prefix_trait__
- \__prefix_traits__
- \__reduce_ex__
- \__setstate__
- \__view_traits__
- _after_run_process
- _before_run_process
- _clone_trait
- _each_trait_method
- _filter
- _flush_traits_cache
- _get_instance_handlers
- _get_log
- _get_sync_trait_info
- _init_trait_delegate_listener
- _init_trait_event_listener
- _init_trait_listeners
- _init_trait_method_listener
- _init_trait_property_listener
- _instance_changed_handler
- _is_list_trait
- _list_changed_handler
- _list_items_changed_handler
- _on_trait_change
- _post_init_trait_listeners
- _propagate_optional_parameter
- _remove_trait_delegate_listener
- _rst_table
- _run_process
- _set_traits_cache
- _sync_trait_items_modified
- _sync_trait_modified
- _trait_added_changed
- _trait_delegate_name
- _trait_listener
- _user_traits
- add_trait
- add_trait_listener
- all_trait_names
- base_trait
- change_dir
- clone_traits
- configure_traits
- context_name
- copy
- copy_traits
- copyable_trait_names
- default_traits_view
- default_values
- edit_traits
- editable_traits
- export_to_dict
- get
- get_brick_to_update
- get_commandline
- get_help
- get_input_help
- get_input_spec
- get_inputs
- get_log
- get_missing_mandatory_parameters
- get_output_help
- get_output_spec
- get_outputs
- get_parameter
- get_scan_bricks
- get_study_config
- has_traits_interface
- id
- import_from_dict
- input
- is_user_trait
- list_outputs
- list_outputs
- log_file
- make_commandline_argument
- make_initResult
- manage_brick_after_run
- manage_brick_before_run
- manage_brick_output_after_run
- manage_brick_output_before_run
- manage_matlab_launch_parameters
- mfile
- name
- on_trait_change
- on_trait_event
- output
- output_directory
- print_traits
- remove_brick_output
- remove_trait
- remove_trait_listener
- reorder_traits
- requirement
- reset_traits
- run
- run_process_mia
- run_process_mia
- save_log
- set
- set_parameter
- set_study_config
- study_config
- switch_to_cur_work_dir
- switch_to_scripts_dir
- sync_trait
- trait
- trait_added
- trait_context
- trait_get
- trait_modified
- trait_names
- trait_set
- trait_setq
- trait_view
- trait_view_elements
- trait_views
- traits
- user_traits
- user_traits_changed
- validate_trait
- versions
- visible_traits
Это self.project:
<populse_mia.data_manager.project.Project object at 0x7fc22f09f400>
- _Database__create_empty_schema
- _Database__db_file
- _Database__scoped_session
- \__class__
- \__delattr__
- \__dict__
- \__dir__
- \__doc__
- \__enter__
- \__eq__
- \__exit__
- \__format__
- \__ge__
- \__getattribute__
- \__gt__
- \__hash__
- \__init__
- \__init_subclass__
- \__le__
- \__lt__
- \__module__
- \__ne__
- \__new__
- \__reduce__
- \__reduce_ex__
- \__repr__
- \__setattr__
- \__sizeof__
- \__str__
- \__subclasshook__
- \__weakref__
- caches
- clear
- engine
- list_tables
- query_type
- string_engine
В объекте self
, похоже, нет объекта project
.
Так почему self.project
существует ???