Python动态结构和内存位置

Python动态结构和内存位置,python,pointers,data-structures,dynamic,memory-address,Python,Pointers,Data Structures,Dynamic,Memory Address,我遇到了这个错误,我认为可能与记忆有关 我有一个班级页面() 页面用于构建动态结构,索引是指向其他页面的指针(或地址)数组。 最初,该地址为空,只有在添加时,才会将该地址包含到另一页 正如您所看到的,在创建任何页面时,索引的所有值都变为无 在我的代码的一部分中,我有: self.index[1] = Page() #Create new page new_page = self.index[1] 执行此代码后,初始页应包含在数组索引中: 没有 新建页面 没有 而新建页面应在数组索引中包含:

我遇到了这个错误,我认为可能与记忆有关

我有一个班级页面()

页面用于构建动态结构,索引是指向其他页面的指针(或地址)数组。 最初,该地址为空,只有在添加时,才会将该地址包含到另一页

正如您所看到的,在创建任何页面时,索引的所有值都变为无

在我的代码的一部分中,我有:

self.index[1] = Page() #Create new page
new_page = self.index[1]
执行此代码后,初始页应包含在数组索引中:

  • 没有
  • 新建页面
  • 没有
新建页面应在数组索引中包含:

  • 没有
  • 没有
  • 没有
问题是,新页面反而包含

  • 没有
  • 新建页面
  • 没有
这没有意义,我没有将新页面的地址分配给任何行中索引的这个位置。 我现在可以看出这一点
self.index[1]=Page()#创建新页面
已执行此新创建的页面的索引中已包含错误的值

我不习惯python(我是一名Java和C程序员),在我的第一个python项目之后,我假设python处理内存,我不必太在意它

我认为发生错误是因为原始数组是空的,并且我正在为它分配一个页面对象,所以可能是我造成了内存问题。 这将用reallocs在C中处理,但我不知道如何在python中解决这个问题,或者如果python中不需要这个内存分配,问题是我没有看到的另一个

医生。 根据要求,完整代码:

类页面:
索引=[None]*256#每个ascii字符一个
is_word=False#如果这是False,那么它不是一个结束词,只是一个传递索引
def插入单词(自我,单词):
如果(len(word)==1):#最终条件
ascii\u数字\u字=ord(字[0])
第页,共页索引=self.index[ascii\u数字\u单词]
如果(第_页,共_页索引==无):#如果索引不存在
第页,共页索引=self.index[ascii\u数字\u单词]=第页()
第_页,共_index.is_word=True#将该页标记为word
其他:
字母=单词[0]
结果单词=单词[1:]
ascii字母编号=ord(字母)
第\页,共\页索引=自索引[ascii \编号\字母]
如果(page_of_index==None):#索引不存在,则创建
self.index[ascii_数字_字母]=页面()#创建新页面
第\页,共\页索引=自索引[ascii \编号\字母]
第\页,共\页索引。插入\字(结果\字)

这是因为在类级别定义的属性在Python中被认为是静态的。试试这个:

类页面:
定义初始化(自):
self.index=[None]*3
self.is_word=False
def创建中间页面(自我):
self.index[1]=第()页
新建页面=自索引[1]
打印(新页面)
定义(自我):
返回str(自索引)
page=第()页
page.create_middle_page()
打印(第页)
输出:

[None, None, None]
[None, <__main__.Page object at 0x7f3bc6326fd0>, None]

您能添加您正在运行的类的完整代码吗?如果我们能看到,我们可能会发现这个错误。你试过我的解决方案吗?如果它有效,请接受答案,如果它让你满意,因为它会给我声誉:)完成,接受,多谢。这正是问题所在,我不知道在类级别定义的属性在Python中被认为是静态的。谢谢!
[None, None, None]
[None, <__main__.Page object at 0x7f3bc6326fd0>, None]