FishHookТогда при удалении append() надо будет удалять insert(). А если они не связаны, то не надо. Нельзя связывать код, надо развязывать код.
А если insert, это append в цикле?
FishHookТогда при удалении append() надо будет удалять insert(). А если они не связаны, то не надо. Нельзя связывать код, надо развязывать код.
А если insert, это append в цикле?
py.user.nextТо есть предлагаете повторять код внутри класса? Покажите мастер класс, как будете развязывать?
А если они не связаны, то не надо. Нельзя связывать код, надо развязывать код.
class Storage: """ Library class with only one method "append(obj)" """ def append(self, obj): pass class MyList(object): def __init__(self): self.storage = Storage() self.len = 0 self.first = None self.last = None def append(self, obj): self.storage.append(obj) if self.len == 0: self.first = obj self.len += 1 self.last = obj def insert(self, lst): for l in lst: self.append(l)
FishHookНу, допустим, в lst миллион элементов. Зачем миллион раз обновлять self.last?
Покажите мастер класс, как будете развязывать?
py.user.nextНизачем. Это искусственный пример. Он лишь демонстрирует маразматичность ваших заявлений.
Ну, допустим, в lst миллион элементов. Зачем миллион раз обновлять self.last?
И зачем такой ограниченный insert()? Почему бы не сделать у него позицию вставки?
FishHookЭтот пример демонстрирует твою некомпетентность(не знаешь) и отсутствие опыта (очевидно же, что это выпадет потом).
Он лишь демонстрирует маразматичность ваших заявлений.
class Flask(_PackageBoundObject): app_ctx_globals_class = _AppCtxGlobals def _get_request_globals_class(self): return self.app_ctx_globals_class def _set_request_globals_class(self, value): from warnings import warn warn(DeprecationWarning('request_globals_class attribute is now ' 'called app_ctx_globals_class')) self.app_ctx_globals_class = value request_globals_class = property(_get_request_globals_class, _set_request_globals_class) del _get_request_globals_class, _set_request_globals_class config_class = Config debug = ConfigAttribute('DEBUG') testing = ConfigAttribute('TESTING') secret_key = ConfigAttribute('SECRET_KEY') session_cookie_name = ConfigAttribute('SESSION_COOKIE_NAME') permanent_session_lifetime = ConfigAttribute('PERMANENT_SESSION_LIFETIME', get_converter=_make_timedelta) send_file_max_age_default = ConfigAttribute('SEND_FILE_MAX_AGE_DEFAULT', get_converter=_make_timedelta) use_x_sendfile = ConfigAttribute('USE_X_SENDFILE') logger_name = ConfigAttribute('LOGGER_NAME') json_encoder = json.JSONEncoder json_decoder = json.JSONDecoder jinja_options = ImmutableDict( extensions=['jinja2.ext.autoescape', 'jinja2.ext.with_'] ) default_config = ImmutableDict({ 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), 'USE_X_SENDFILE': False, 'LOGGER_NAME': None, 'LOGGER_HANDLER_POLICY': 'always', 'SERVER_NAME': None, 'APPLICATION_ROOT': None, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), 'TRAP_BAD_REQUEST_ERRORS': False, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': True, 'TEMPLATES_AUTO_RELOAD': None, }) url_rule_class = Rule test_client_class = None session_interface = SecureCookieSessionInterface() def __init__(self, import_name, static_path=None, static_url_path=None, static_folder='static', template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None): _PackageBoundObject.__init__(self, import_name, template_folder=template_folder, root_path=root_path) if static_path is not None: from warnings import warn warn(DeprecationWarning('static_path is now called ' 'static_url_path'), stacklevel=2) static_url_path = static_path if static_url_path is not None: self.static_url_path = static_url_path if static_folder is not None: self.static_folder = static_folder if instance_path is None: instance_path = self.auto_find_instance_path() # !!!!! elif not os.path.isabs(instance_path): raise ValueError('If an instance path is provided it must be ' 'absolute. A relative path was given instead.') self.instance_path = instance_path self.config = self.make_config(instance_relative_config) # !!!!! self._logger = None self.logger_name = self.import_name self.view_functions = {} self._error_handlers = {} self.error_handler_spec = {None: self._error_handlers} self.url_build_error_handlers = [] self.before_request_funcs = {} self.before_first_request_funcs = [] self.after_request_funcs = {} self.teardown_request_funcs = {} self.teardown_appcontext_funcs = [] self.url_value_preprocessors = {} self.url_default_functions = {} self.template_context_processors = { None: [_default_template_ctx_processor] } self.shell_context_processors = [] self.blueprints = {} self._blueprint_order = [] self.extensions = {} self.url_map = Map() self._got_first_request = False self._before_request_lock = Lock() if self.has_static_folder: self.add_url_rule(self.static_url_path + '/<path:filename>', endpoint='static', view_func=self.send_static_file) # !!!!! self.cli = cli.AppGroup(self) def _get_error_handlers(self): from warnings import warn warn(DeprecationWarning('error_handlers is deprecated, use the ' 'new error_handler_spec attribute instead.'), stacklevel=1) return self._error_handlers def _set_error_handlers(self, value): self._error_handlers = value self.error_handler_spec[None] = value error_handlers = property(_get_error_handlers, _set_error_handlers) del _get_error_handlers, _set_error_handlers
py.user.nextДавай предположим, что мы говорим не про методы, а про обычные функции, какая в принципе разница?
Ты связал методы append() и insert() между собой и из-за этого ты теперь не сможешь их расширять (или исправлять в них баги). Потому что любое расширение одного метода будет ломать все методы, которые на нём основываются.
FishHook__init__ - это “приватный” метод, практически он относится к внутреннему содержимому объекта. То же самое касается методов с подчёркиваниями в начале.
Ранахера тоже в нубы записывай.
FishHookБольшая разница. Методы - это объединённая группа функций (вокруг данных), образующая внешний интерфейс (готовый к плотному закреплению в другом коде).
Давай предположим, что мы говорим не про методы, а про обычные функции, какая в принципе разница?