クラス インスタンス メンバーの動的な作成に問題があります。ディレクトリのように動作し、クラスに含まれるファイルにちなんで名付けられたインスタンス メンバーを持つクラス オブジェクトを作成しようとしています。
ただし、__setitem__()
クラスのメソッドに到達できません。私はこれに間違って近づいているかもしれません。私はわかりません。
これが私のコードです:
import IPython
import sys, os
ipath = IPython.utils.path.get_ipython_dir()
tutorial_config = "%s/profile_peter/startup"%ipath
sys.path.append(tutorial_config)
from tutorial_helpers import directoryClass, fileClass
## Determine Operating System
if sys.platform == "win32":
OperatingSystem = "Windows"
elif sys.platform =="linux2":
OperatingSystem = "Linux"
else:
raise Exception("could not find OS")
print OperatingSystem
root_path = os.getcwd()
class OS_appropriete_file():
separator = None
def __init__(self, rootPath, relative_path):
self.create_separator(relative_path)
self = fileClass(rootPath+self.separator+relative_path)
def create_separator(self,relative_path):
if OperatingSystem == "Windows":
escape_sequences = ['a','b','f','t','v','n','r','x']
self.separator = "\\"
elif OperatingSystem == "Linux":
self.separator = "/"
class dirClass(object):
def __init__( self,root,newFileName):
separator = self.create_separator(newFileName)
self.root = root+separator+newFileName
def create_file(self,fileName):
FileName_withoutExtension = fileName.split(".")[0]
print "extless:"
print FileName_withoutExtension
super(dirClass,self).__setitem__(FileName_withoutExtension, OS_appropriete_file(self.root,fileName))
#self.__class__.__dict__[FileName_withoutExtension] = OS_appropriete_file(self.root,fileName)
def create_separator(self,relative_path):
if OperatingSystem == "Windows":
escape_sequences = ['a','b','f','t','v','n','r','x']
separator = "\\"
elif OperatingSystem == "Linux":
separator = "/"
return separator
class files():
mypackage=dirClass(root_path,"mypackage")
mypackage.create_file("__init__.py")
mypackage.create_file("main.py")
## subpackage
subpackage1=dirClass(root_path,"subpackage1")
subpackage1.create_file("sub1.py")
subpackage1.create_file("__init__.py")
subpackage2=dirClass(root_path,"subpackage2")
subpackage2.create_file("sub2.py")
subpackage2.create_file("__init__.py")
if __name__ == "__main__":
fileEx = files()
を使用してこのファイルをインポートするfrom referenced_paths_and_files import *
と、次のエラーが表示されます。
AttributeError: 'super' object has no attribute '__setitem__'
私がやろうとしているのは、OS_apppropriete_file のインスタンスである引数「newFileName」にちなんで名付けられたメンバー変数を持つ dirClass インスタンスを作成することです。
助けてくれてありがとう!