목록이 처리 될 때 콘텐츠 블록 '인스턴스'의 목록이 있습니다. 각 블록의 콘텐츠가 콘텐츠 유형 클래스 그것이 의미가있는 경우).Python : 다른 클래스 인스턴스의 출력에서 클래스 인스턴스의 속성을 설정하려고 시도했습니다.
목록을 반복하면서 extra_modules에서 명명 된 모듈의 인스턴스에서 출력 된 모듈 인스턴스의 특성을 설정하려고합니다. 이 질문을 작성하는 더 좋은 방법이 있다면 언제든지 편집하십시오.
다음은 Python Bottle 프레임 워크를 사용하여 실행하려고하는 테스트 코드의 예입니다. 실제로 photoGallery 클래스에 코드를 생성하는 코드를 넣기 전에 테스트 출력을 얻으려고합니다.
core.py :
import extra_modules
module_blocks_in_db = [
# module-ID, module-sys-name, module-sys-desc, module-function, module-variables
[1, 'photo_gallery_main', 'A little intro gallery', 'photoGallery', '{"images": ["photo1.jpg", "photo2.jpg", "photo3.jpg"]}'],
]
class moduleBlocks:
def __init__(self, mbidb):
for i in mbidb:
setattr(self, i[1], getattr(extra_modules, i[3])(i[4]))
@route('/')
def home():
page_id = 1
modules = moduleBlocks(module_blocks_in_db)
return modules.photo_gallery_main
extra_modules.py : 정말이야
File "core.py", line 46, in __init__
setattr(self, i[1], getattr(extra_modules, i[3])(i[4]))
TypeError: __init__() should return None
:
class photoGallery:
def __init__(self, *args):
self.output = 'Output from photoGallery class instance'
return self.output
이 내가 병의 개발 서버에서지고있어 오류가 이 오류를 잘 이해하지 못하면서 코드를 더 많이 볼수록 혼란 스럽습니다. 클래스 인스턴스의 출력을 잡아 내 예제에서 moduleBlocks 클래스의 특성으로 할당하려면 여러 가지 방법을 시도했습니다. 내가 이걸 어디서 잘못 먹었습니까?
편집 : 지금 두 개의 별도의 라인에 나의 않은 setattr 라인을 변경하고 extra_modules의 포토 갤러리 클래스에서 반환 출력을 제거있어 사물이 지금 잘, 감사 작업 :
x = getattr(extra_modules, i[3])(i[4])
setattr(self, i[1], x.output)
이 줄로 할거야? – mbatchkarov
getattr을 사용하여 photoGallery 클래스의 인스턴스를 생성합니다.이 인스턴스는 def __init__에서 콘텐츠를 생성하고이 인스턴스를 반환합니다. 산출. 그런 다음 해당 출력으로 moduleBlocks 인스턴스의 관련 특성을 설정하려고합니다. –