자바로 작성된 파이썬으로 라이브러리를 작성해야한다. 자바 배경 파이썬에서 오는 것은 나에게 조금 어려운 시간을주고있다. 나는 뭔가를하고 오른쪽 파이썬 방법을 선택 붙어 있어요 ..파이썬에서 파이썬으로 파이썬 코드 재 작성하기
그래서, 내 자바 코드가 같은 것입니다 :
import java.util.Collection;
public abstract class MyEnumBaseClass
{
protected int value;
protected String description = null;
protected MyEnumBaseClass(int iValue, String iDescription)
{
value = iValue;
description = iDescription;
}
public int getValue()
{
return value;
}
public String getDescription()
{
return description;
}
protected static MyEnumBaseClass getEnum(Collection<MyEnumBaseClass> iter, int value)
{
for (MyEnumBaseClass enumObj : iter)
{
if (enumObj.getValue() == value)
{
return enumObj;
}
}
return null;
}
}
import java.util.ArrayList;
import java.util.Collection;
public class MyEnumClass extends MyEnumBaseClass
{
private final static Collection<MyEnumBaseClass> enumList = new ArrayList<MyEnumBaseClass>();
public final static int ERROR1 = 1;
public final static int ERROR2 = 2;
public final static int ERROR3 = 3;
public final static int ERROR4 = 4;
public final static MyEnumClass ErrorEnum1 = new MyEnumClass(ERROR1, "ERROR1");
public final static MyEnumClass ErrorEnum2 = new MyEnumClass(ERROR2, "ERROR1");
public final static MyEnumClass ErrorEnum3 = new MyEnumClass(ERROR3, "ERROR1");
public final static MyEnumClass ErrorEnum4 = new MyEnumClass(ERROR4, "ERROR1");
protected MyEnumClass(int iValue, String iDescription)
{
super(iValue, iDescription);
}
public static int getCount()
{
return enumList.size();
}
public static Collection<MyEnumBaseClass> getList()
{
return enumList;
}
public static MyEnumBaseClass getEnum(int value)
{
return getEnum(enumList, value);
}
}
내가 파이썬에서이 뭔가를 쓰고 싶어합니다. 나는 두 언어가 완전히 다른 것을 이해합니다. 정확한 코드를 복제하고 싶지는 않지만 파이썬에서 Java 코드가 제공하는 기능을 제공하는 것을 작성하고 싶습니다. 내가 알고 싶어
# MODULE MYENUMBASECLASS:::
class MyEnumBaseClass(object):
def __init__(self, iValue, iDescription, ui = None):
self._value = iValue
self._description = iDescription
def getValue(self):
return self._value
def getDescription(self):
return self._description
@classmethod
def getEnum(cls, value, itr):
for enumObj in itr:
if enumObj.getValue() == value:
return enumObj
return None
# MODULE: ENUMS:::
from MyEnumBaseClass import MyEnumBaseClass
__all__ = ["MyEnumClassConstants", "MyEnumClass", "MyEnums"]
_enumList = []
class MyEnumClassConstants(object):
ERROR1 = 1
ERROR2 = 2
ERROR3 = 3
ERROR4 = 4
class MyEnumClass(MyEnumBaseClass):
def __init__(self, v, d, ui):
global _enumList
super(MyEnumClass, self).__init__(v, d, ui)
_enumList.append(self)
@staticmethod
def getCount():
return len(_enumList)
@staticmethod
def getList():
return _enumList
@classmethod
def getEmum(cls, value, itr = None):
return super(MyEnumClass, cls).getEnum(value, _enumList)
class MyEnums(object):
ErrorEnum1 = MyEnumClass(MyEnumClassConstants.ERROR1, "ERROR1");
ErrorEnum2 = MyEnumClass(MyEnumClassConstants.ERROR2, "ERROR2");
ErrorEnum3 = MyEnumClass(MyEnumClassConstants.ERROR3, "ERROR3");
ErrorEnum4 = MyEnumClass(MyEnumClassConstants.ERROR4, "ERROR4");
: 그것을 수행하는 올바른 파이썬 방법
가
그래서 내가 좋아하는 뭔가를 함께했다?MyEnums 클래스의 ErrorEnum1,2,3,4 및 상수를 모듈 변수로 옮기고 싶었습니다. 하지만 그 방법으로는 내 에 모두 긴 목록을 가지고 있습니다. 모두입니다. 또한 다른 모듈에서 Enums 모듈을 가져올 때 변수 이름 충돌의 위험이 있습니다 (다른 일부 Enums2 모듈에도 ErrorEnum1,2,3이있을 수 있습니다.)하지만 큰 문제는 아닙니다 .Enums.ErrorEnum1과 Enums2를 항상 사용할 수 있습니다. .ErrorEnum1). 나는 생각하고 있니?
나는 이것이 완벽하지 않다는 것을 안다. (내 첫 번째 파이썬 코드). 그래서 나는 너희들에게 나에게 아이디어를 주라고 초대한다. 그들이 할 수 없습니다에 대한 정말 좋은 이유이 아니라면
감사 일반적으로
완전히 주제가 맞지 않지만 Java의 열거 유형을 사용하지 않은 이유가 있습니까? – poke
그것에 대해 아무런 설명이 없습니다. 왜냐하면 내가 파이썬 API를 만드는이 작업을 할 때 이미 이와 같았 기 때문입니다. 이것은 SOAP 메시지에서 사용되었습니다. 그래서, 내가 이해하는 한, 내가 붙여 넣은 자바 코드는 에러 코드와 설명이 있다는 이점을 제공한다. Java Enum은 그렇지 않습니다. 또한 제거한 다른 코드가 있습니다. 여기에서 묻는 질문에는 문제가 없기 때문입니다. – Ashutosh
자바에서 열거 형은 실제로는 특별한 클래스이므로 일반 클래스에서 거의 모든 것을 연결할 수 있습니다. 이 주제는 파이썬 코드에 관한 것이지 자바 코드에 관한 것이 아니기 때문에 주제가 아닙니다. 단지 궁금한 것이 었습니다 ...;) – poke