Python 2.6을 사용하여 다양한 형식의 테이블 (xls, csv, shp, json, xml, html 테이블 데이터)을 처리하고 해당 내용을 ArcGIS 데이터베이스 테이블에 제공하려고합니다. (나와 함께있어주세요, 이것은 GIS 부분보다 프로세스의 파이썬 부분에 관한 것입니다). 현재 디자인에서 기본 클래스는 대상 데이터베이스 테이블을 형식화하고 소스 형식의 내용으로 채 웁니다. 서브 클래스는 현재 기본 형식이 원본 형식과 상관없이 내용을 처리 할 수 있도록 사전에 내용을 공급하도록 설계되었습니다.하위 클래스를 기반으로 동작 결정
문제는 내 사용자가 스크립트에 이러한 형식 중 하나의 파일이나 테이블을 제공 할 수 있으므로 런타임시 하위 클래스가 최적으로 결정된다는 것입니다. 나는 정말로 관련된 if-elif-elif -... 블록을 실행하는 것 이외의 다른 방법을 모른다. 구조는 가지 다음과 같습니다 오리 타이핑 및 다형성의
class Input:
def __init__(self, name): # name is the filename, including path
self.name = name
self.ext = name[3:]
d = {} # content goes here
... # dictionary content written to database table here
# each subclass writes to d
class xls(Input):
...
class xml(Input):
...
class csv(Input):
...
x = Input("c:\foo.xls")
y = Input("c:\bar.xml")
내가 알기로이 그것에 대해 이동하는 방법이 아니다 제안,하지만 난 더 나은 디자인을 알아내는 힘든 시간을 보내고 있습니다. 앞 부분에 대한 도움말이 도움이 될 것입니다. 그러나 실제로 후자는 x.ext
또는 y.ext
을 하위 클래스 (따라서 입력 처리)가 결정되는 포크로 변환하는 방법입니다.
도움이된다면, 이제 foo.xls
과 bar.xml
같은 데이터가 있다고 가정하자, 그래서 x.d
및 y.d
결국 같은 {'name':'Somegrad', 'lat':52.91025, 'lon':47.88267}
과 같은 항목을해야합니다.
에 오신 것을 환영합니다! 질문, 답변 및 의견에 대한 마크 업 가능성을 자세히 설명하는 [markdown help pages] (http://stackoverflow.com/editing-help)를 확인하십시오. – collapsar