Как мне перевести этот код JavaScript в код Python?

Извините, я знаю, что это могут быть странные вопросы, но я сделал эту базовую программу JavaScript, и я не совсем уверен, что мне следует искать, чтобы узнать, как перевести ее в программу Python с той же функциональностью. Я знаю, как работает код, но я не знаю, что это за технический термин, поэтому я изо всех сил пытаюсь понять, как это сделать в python. Любая помощь будет принята с благодарностью. Спасибо!


var myArray = [];

var myCache = {

    add: function a(x){
        myArray.shift();
        myArray.push(x);
    },

    access: function b(z){
        var zLocation = myArray.indexOf(z);
        var temp1 = myArray.slice(0,zLocation);
        var temp2 = myArray.slice(zLocation+1, myArray.length);
        temp1 = temp1.concat(temp2);
        temp1.push(z);
        myArray = temp1;
    },

    print: function c(){
        console.info("Current array is: " + myArray);
    },

    size: function d(y){
        yArray.length = y;
    }
};

myCache.add(7); 

Я не знаю, как добавить функции добавления, доступа, печати и размера к тому, что я создаю на Python. Спасибо!

Вы можете использовать Js2Py

user 23.07.2019 19:43

Этот код javascript содержит объект myCache с функциями в качестве значений. Вы можете создать класс в python с методами, которые делают это. Почитайте про классы и методы и должно стать понятно как это сделать.

JacobIRR 23.07.2019 19:44

что ты уже испробовал?

Klaus D. 23.07.2019 19:44

Я пока мало что пробовал, потому что я относительно новичок в Python, но я попробую то, что предложил JacoblRR.

Dan 23.07.2019 19:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
213
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Просто используйте Js2PY. Он написан на Python, поэтому, конечно, у вас должен быть Python, но в остальном это хорошо. Если вы хотите пройти долгий путь, изучите Python, что было бы лучше, потому что, когда у вас есть код на Python, вы знаете, как его изменить.

Да, я определенно думаю, что попробую Js2Py. Спасибо!

Dan 23.07.2019 19:55

Просто имейте в виду, что вывод, созданный Js2PY, не очень читабелен, поэтому, если вы действительно планируете перенести свою кодовую базу JS на python, я бы рекомендовал переписать ее «правильно» (например, вручную), если вам просто нужно «транспилировать» ее и вы будете продолжать развиваться в JS, Js2PY подойдет!

exside 23.07.2019 19:57
Ответ принят как подходящий

Поскольку python является объектно-ориентированным языком, способ получения объекта заключается в основном в создании класса, который действует как план/прототип для различных экземпляров этого объекта. Таким образом, ваш код, переведенный на python, может выглядеть примерно так:

(все вы, знатоки Python, простите меня, я не =D)

class MyCache:
    def __init__(self, *args, **kwargs):
        # in python the most similar to a javascript array is a list
        # to make it a bit more readable `myArray` is called `_cache` here
        self._cache = []

    def add(self, x):
        # do not try to pop() from an empty list, will throw an error
        if self._cache:
            self._cache.pop(0)

        self._cache.append(x)

    def access(self, z):
        # index() is a bit whimpy in python...
        try:
            i = self._cache.index(z);
            # I think we don't need the .slice() stuff here,
            # can just .pop() at the index in python
            self._cache.pop(i)
            self._cache.append(z)
        except ValueError as err:
            print(err)

    def size(self, y):
        # not sure what you want to do here, initialize the cache with
        # an array/list of a specific length?
        self._cache = [None] * y

    # print is a reserved word in python...
    def status(self):
        print("Current array is: ")
        print(self._cache)

# instantiate the class (e.g. get a cache object)
# and do some stuff with it..
cache = MyCache()
cache.add(7)
cache.status()
cache.add(10)
cache.status()
cache.add(3)
cache.status()
cache.access(3)
cache.status()

не уверен, что это на самом деле делает то, что вы ожидаете, у вас всегда будет только 1 значение в кеше, потому что метод add() всегда будет удалять его... поэтому метод access не имеет смысла. ..но, может быть, это был просто ваш упрощенный пример кода?

Да, я только разместил немного упрощенного материала. Метод add должен смещаться, поэтому, если размер равен 3, при добавлении первая вещь удаляется, а все остальное сдвигается вниз на 1, чтобы освободить место для нового добавления. То, что вы опубликовали, - это именно то, что я хотел, чтобы я мог просмотреть это и точно узнать, как делать то, что я себе представлял. Благодарю вас!

Dan 23.07.2019 20:55

Другие вопросы по теме