Python 属性错误:';非类型';对象没有属性';打印玩具&x27;

Python 属性错误:';非类型';对象没有属性';打印玩具&x27;,python,arrays,class,Python,Arrays,Class,我有一个非常简单的python代码,其中我在构造函数中创建了一个对象数组,但是每当我尝试调用display函数来查看对象数组中的所有对象时,它都会返回这个非类型异常 名为Toy的类是实际的对象类,如下所示: class Toy: __name=None __cost=None def __init__(self,name,cost): self.__name=name self.__cost=cost def get_Name(self): return self.__name de

我有一个非常简单的python代码,其中我在构造函数中创建了一个对象数组,但是每当我尝试调用display函数来查看对象数组中的所有对象时,它都会返回这个非类型异常

名为Toy的类是实际的对象类,如下所示:

class Toy:
__name=None
__cost=None

def __init__(self,name,cost):
 self.__name=name
 self.__cost=cost

def get_Name(self):
 return self.__name

def get_Cost(self):
 return self.__cost 

def print_Toy(self):
 print(" Name of the toy: ",self.__name)
 print(" Cost of the toy: ",self.__cost)
下面显示的类Toy_Bag包含对象数组,我正在构造函数中初始化它

from Toy import Toy

class Toy_Bag:
__toys=[None]

def __init__(self, no_of_toys):
 self.__create_Toy_bag(no_of_toys)

def __create_Toy_bag(self, no_of_toys):
 name,cost= None,0
 for toy in range(0, no_of_toys):
  print("\n Enter the name of the toy: ",end="")
  name=input()
  print("\n Enter the cost of the toy: ",end="")
  cost=int(input())
  toy=Toy(name,cost)
  self.__toys.append(toy)
 self.print_Toy_Bag() 

def print_Toy_Bag(self):
 for toy in self.__toys:
  toy.print_Toy()

回溯(最近一次呼叫最后一次):
文件“Main.py”,第9行,在
玩具袋=玩具袋(3)
文件“C:\Users\SONY\Desktop\Python Scripts\Tools\Toy\u Bag.py”,第8行,在\uu init中__
自行制作玩具袋(无玩具)
文件“C:\Users\SONY\Desktop\Python Scripts\Tools\Toy\u Bag.py”,第19行,在创建玩具袋中
self.print_Toy_Bag()
文件“C:\Users\SONY\Desktop\Python Scripts\Tools\Toy\u Bag.py”,第23行,在print\u Toy\u Bag中
玩具
AttributeError:“非类型”对象没有“打印”属性
C:\Users\SONY\Desktop\Python Scripts\Tools>

非常感谢您的帮助。

您正在使用
None
的一个元素初始化列表,如下所示:

class Toy_Bag:
    __toys=[None]
然后在
def\uu create\u Toy\u包中添加更多玩具(self,no\u of\u toys)
-将位于列表中的位置1到n。第一个保持
None

如果打印
\uu玩具
,则使用第一个
调用
玩具
-类的方法

换成

__toys=[]
所以

不再将第一个元素作为
None
获取



您可能希望给出一个read-它可以帮助您调试自己的程序。如果您对如何“正确”命名内容感兴趣:这也是一本很好的读物(空格、私人成员和其中包含的许多其他内容)。

您正在使用
的一个元素初始化列表,如下所示:

class Toy_Bag:
    __toys=[None]
然后在
def\uu create\u Toy\u包中添加更多玩具(self,no\u of\u toys)
-将位于列表中的位置1到n。第一个保持
None

如果打印
\uu玩具
,则使用第一个
调用
玩具
-类的方法

换成

__toys=[]
所以

不再将第一个元素作为
None
获取



您可能希望给出一个read-它可以帮助您调试自己的程序。如果您对如何“正确”命名内容感兴趣:这也是一个很好的读物(空格、私有成员和其中包含的许多其他内容)。

可能重复的请复制粘贴错误:图像很难搜索,搜索时很难理解。对于“隐藏”的方法,您应该使用一个下划线可能重复请复制粘贴错误:图像很难搜索,搜索时也很难理解。对于“隐藏”的方法,您应该使用一个下划线。非常感谢,它很有效。实际上,我是Python新手,这就是我犯那个愚蠢错误的原因。@AbdulTayyeb阅读了我提供的链接。出于调试目的打印列表和变量有很大帮助;)非常感谢,它成功了。实际上,我是Python新手,这就是我犯那个愚蠢错误的原因。@AbdulTayyeb阅读了我提供的链接。出于调试目的打印列表和变量有很大帮助;)