Python 列表没有传递到主类
对不起,我是Python新手,我知道答案应该是显而易见的。我有一个用parametrs和constructor组织的类,但我不能在main中从该类调用任何方法。我想,这可能是smth的名单通过Python 列表没有传递到主类,python,list,function,class,Python,List,Function,Class,对不起,我是Python新手,我知道答案应该是显而易见的。我有一个用parametrs和constructor组织的类,但我不能在main中从该类调用任何方法。我想,这可能是smth的名单通过 class PersonData: def __init__(self,nameSet=[],hoursNeed=[],daysOff=[]): self.__nameSet=nameSet self.__hoursNeed=hoursNeed self.__daysOff=day
class PersonData:
def __init__(self,nameSet=[],hoursNeed=[],daysOff=[]):
self.__nameSet=nameSet
self.__hoursNeed=hoursNeed
self.__daysOff=daysOff
def getNameSet(self):
return self.nameSet
def setHoursNeed(self,hoursNeed):
self.hoursNeed=hoursNeed
def setDaysOff(self,daysOff):
self.daysOff=daysOff
def RandomFulfil(nameSet): #JUST FOR CHECK
for element in nameSet:
print(element)
主要内容如下:
from PersonData import PersonData
def main():
nameList=[]
hoursList=[]
daysOffList=[]
print("How many employees you have: ")
N=int(input())
for x in range(N):
print("Enter employees names now: ",N," left: ")
x=input("")
nameList.append(x)
print("Enter employees working hours per week now:")
y=input("")
hoursList.append(y)
print("Enter employees days off per week now:")
z=input("")
daysOffList.append(z)
N-=1
people=PersonData(nameList,hoursList,daysOffList)
#people.any method <---- this one is not working
使用任何方法时,您可能会得到一个
AttributeError
,因为他们试图访问的变量根本不存在:
您在构造函数中初始化的成员与您试图在其他方法中使用的成员完全不同:self.\uu nameSet
与self.nameSet
,self.\uu daysOff
与self.daysOff
不同,等等
另外,您不应该使用可变约束器作为默认参数(不要在构造函数中使用
nameSet=[]
等)。您的代码有很多地方不太合适。1.您正在使用可变容器作为默认参数2。您的一些实例变量被破坏了(我不确定这是您想要的),3。您正在访问这些方法中不存在的属性。请检查我的更新。同样,我不知道如何在constractor中显示我将使用名称集和小时集作为列表。@VladDemyan在分配之前,您可以通过isinstance(给定参数,列表)
检查给定类型是否为列表@VladDemyan好的,我检查了你的更新,再说一次,你说“你没有方法”是什么意思?如果您没有正确描述您的问题,我们将无能为力。我的意思是,在我尝试调用例如getNameSet时,基本上看不到people.getNameSet()。我的意思是我可以访问字段,但不能访问方法。“不可见”是什么意思?你有什么错误吗?执行people.getNameSet()
时会发生什么?
def __init__(self,nameSet,hoursNeed,daysOff):
self.nameSet=nameSet
self.hoursNeed=hoursNeed
self.daysOff=daysOff