Конвертировать из Java в Python - PullRequest
0 голосов
/ 07 апреля 2019

Я новичок в python, и мне интересно, как можно было бы преобразовать кусок кода в данном случае Java в python. Например, если открытый класс Example является классом, который состоит из нескольких функций, например:

Файл 1:

public class Example{
    private ArrayList<Something> somethings;
    private boolean test;

    foo(){
            test= false;
            somethings = new ArrayList<>();
        }

.
.
.

Файл 2:

class Something{
    private Example another;
    private String whatever;

    Something(String a, Node another){
        this.another = another ;
        this.whatever = whatever;
    }

.
.
.

В Python что эквивалентно import java.util.ArrayList; и как можно было бы вызвать другой класс?

Это будет своего рода эквивалент вышеупомянутого в python? Как мне связать 2 класса в python?

class Example():
    def __init__(self):
        self.test= False
        self.somethings= []

.
.
.

class Something:
    def __init__(self, another, whatever):
        self.another = another 
        self.whatever = whatever 
.
.
.

Заранее спасибо

РЕДАКТИРОВАТЬ 1: Мои вопросы в основном, если реализация этого куска кода правильная и как вызвать класс в классе в Python

РЕДАКТИРОВАТЬ 2: Спасибо всем, кто ответил до сих пор. Просто, чтобы уточнить еще одну вещь, если у меня было что-то подобное в классе Пример:

void exampleSomething(Example exampleb, String a){
        somethings.add(new Something(a, another));
    }

в python это будет следующим:

def exampleSomething(another, a):
    self.somethings.append(a, another)

Еще раз спасибо

Ответы [ 3 ]

3 голосов
/ 07 апреля 2019

Некоторые ключевые отличия

  • list встроен в Python. Просто сделай x = [1, 2, 3]
  • есть нет личного . По договоренности вы используете префикс «private» для вашей переменной _, но ничто не может помешать другим получить к ним доступ.
  • внутри класса, вы должны использовать this везде. this обычно называется self в питоне
  • объявление ваших переменных внутри тела класса (внешние методы) делает их переменными класса, а не переменными экземпляра (что-то вроде static в Java)

Объекты называются так же, как в Java. Если у вас есть ссылка на obj в другом классе, просто позвоните obj.f(x)

0 голосов
/ 07 апреля 2019

Посмотрим:

class Example():
    def __init__(self):
        self.test= False
        self.somethings= []

.
.
.

class Something:
    def __init__(self, another, whatever):
        self.another = another 
        self.whatever = whatever 
.
.
.

Должно быть в порядке. Но все ваши ученики являются публичными. Давайте сделаем их приватными:

class Example():
    def __init__(self):
        self._test= False
        self._somethings= []

.
.
.

class Something:
    def __init__(self, another, whatever):
        self._another = another 
        self._whatever = whatever 
.
.
.

Чтобы добавить получатели и средства проверки, оформитель @property: https://www.programiz.com/python-programming/methods/built-in/property

Теперь, вы хотите типы? В Python 3+ вы можете иметь типы: https://docs.python.org/3/library/typing.html

class Example():
    def __init__(self):
        self._test= False
        self._somethings= []

.
.
.

class Something:
    def __init__(self, another -> str, whatever -> Node):
        self._another = another 
        self._whatever = whatever 
.
.
.

И ArrayList становится просто list() - встроенным типом, доступным везде.

0 голосов
/ 07 апреля 2019

Чтобы импортировать класс в Python, если класс должен находиться в отдельном файле, просто используйте:

import fileName

в начале вашего второго файла

В вашемслучае, вы бы:

import example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...