Загрузка и запись текстового файла в html [duplicate]

В чем разница между @staticmethod и @classmethod в Python?

blockquote>

Возможно, вы видели код Python, такой как этот псевдокод, который демонстрирует подписи различных типов методов и дает объяснение каждому из них:

class Foo(object):

    def a_normal_instance_method(self, arg_1, kwarg_2=None):
        '''
        Return a value that is a function of the instance with its
        attributes, and other arguments such as arg_1 and kwarg2
        '''

    @staticmethod
    def a_static_method(arg_0):
        '''
        Return a value that is a function of arg_0. It does not know the 
        instance or class it is called from.
        '''

    @classmethod
    def a_class_method(cls, arg1):
        '''
        Return a value that is a function of the class and other arguments.
        respects subclassing, it is called with the class it is called from.
        '''

Метод Normal Instance

Сначала я объясню a_normal_instance_method. Это точно называется «методом экземпляра». Когда используется метод экземпляра, он используется как частичная функция (в отличие от общей функции, определенной для всех значений при просмотре в исходном коде), которая при использовании первая из аргументов предопределена как экземпляр объект со всеми его атрибутами. Он имеет экземпляр связанного с ним объекта и должен вызываться из экземпляра объекта. Как правило, он будет обращаться к различным атрибутам экземпляра.

Например, это экземпляр строки:

', '

, если мы используем метод экземпляра, join on эта строка, чтобы присоединиться к другой итерабельной, она, очевидно, является функцией экземпляра, в дополнение к функции итерируемого списка, ['a', 'b', 'c']:

>>> ', '.join(['a', 'b', 'c'])
'a, b, c'

Связанные методы

Методы экземпляров могут быть связаны через пунктирный поиск для использования позже.

Например, это связывает метод str.join с экземпляром ':':

>>> join_with_colons = ':'.join 

И позже мы можем использовать это как функцию, которая уже имеет первый связанный с ней аргумент. Таким образом, он работает как частичная функция экземпляра:

>>> join_with_colons('abcde')
'a:b:c:d:e'
>>> join_with_colons(['FF', 'FF', 'FF', 'FF', 'FF', 'FF'])
'FF:FF:FF:FF:FF:FF'

Статический метод

Статический метод делает не аргумент.

Он очень похож на функцию уровня модуля.

Однако функция модуля должна находиться в модуле и быть специально импортирована в другие места, где она используется.

Если он привязан к объекту, он также будет удобно перемещаться по объекту посредством импорта и наследования.

Примером статического метода является str.maketrans, перемещенный из модуль string в Python 3. Он делает таблицу перевода подходящей для потребления str.translate. Это кажется довольно глупым при использовании из экземпляра строки, как показано ниже, но импорт функции из модуля string довольно неуклюжий, и приятно иметь возможность вызвать его из класса, как в str.maketrans

# demonstrate same function whether called from instance or not:
>>> ', '.maketrans('ABC', 'abc')
{65: 97, 66: 98, 67: 99}
>>> str.maketrans('ABC', 'abc')
{65: 97, 66: 98, 67: 99}

В python 2 вам нужно импортировать эту функцию из все более менее полезного строкового модуля:

>>> import string
>>> 'ABCDEFG'.translate(string.maketrans('ABC', 'abc'))
'abcDEFG'

Метод класса

Метод класса аналогичен методу экземпляра, поскольку он принимает неявный первый аргумент, но вместо того, чтобы принимать экземпляр, он принимает класс. Часто они используются как альтернативные конструкторы для лучшего семантического использования, и они будут поддерживать наследование.

Самым каноническим примером встроенного метода класса является dict.fromkeys.

>>> dict.fromkeys(['a', 'b', 'c'])
{'c': None, 'b': None, 'a': None}

Когда мы подклассифицируем dict, мы можем использовать тот же самый метод, который был бы использован в качестве альтернативного конструктора dict. конструктор, который создает экземпляр подкласса.

>>> class MyDict(dict): 'A dict subclass, use to demo classmethods'
>>> md = MyDict.fromkeys(['a', 'b', 'c'])
>>> md
{'a': None, 'c': None, 'b': None}
>>> type(md)

См. исходный код pandas для других подобных примеров альтернативных конструкторов, а также официальную документацию Python на classmethod и staticmethod .

43
задан jncraton 12 March 2013 в 02:05
поделиться

6 ответов

Вам нужно добавить dataType - http://api.jquery.com/jQuery.ajax/

$(document).ready(function() {
    $("#lesen").click(function() {
        $.ajax({
            url : "helloworld.txt",
            dataType: "text",
            success : function (data) {
                $(".text").html(data);
            }
        });
    });
}); 
58
ответ дан Dogbert 25 August 2018 в 16:01
поделиться

.load("file.txt") намного проще. Что работает, но даже при тестировании вы не получите результаты от локального диска, вам понадобится настоящий HTTP-сервер. Невидимая ошибка - ошибка XMLHttpRequest.

4
ответ дан antyrat 25 August 2018 в 16:01
поделиться

Вы можете использовать метод jQuery load для получения содержимого и вставки в элемент.

Попробуйте следующее:

$(document).ready(function() {
        $("#lesen").click(function() {
                $(".text").load("helloworld.txt");
    }); 
}); 

Вы также можете добавьте обратный вызов, чтобы выполнить что-либо после завершения процесса загрузки

, например:

$(document).ready(function() {
    $("#lesen").click(function() {
        $(".text").load("helloworld.txt", function(){
            alert("Done Loading");
        });
   }); 
}); 
2
ответ дан Chandu 25 August 2018 в 16:01
поделиться
 <script type="text/javascript">     
   $("#textFileID").html("Loading...").load("URL TEXT");
 </script>  

 <div id="textFileID"></div>
0
ответ дан Jax 25 August 2018 в 16:01
поделиться

Вы можете использовать jQuery.load (): http://api.jquery.com/load/

Как это:

$(".text").load("helloworld.txt");
34
ответ дан jncraton 25 August 2018 в 16:01
поделиться

Попробуйте

$(".text").text(data);

Или для преобразования данных, полученных в строку.

0
ответ дан Jose Faeti 25 August 2018 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: