Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表没有传递到主类_Python_List_Function_Class - Fatal编程技术网

Python 列表没有传递到主类

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

对不起,我是Python新手,我知道答案应该是显而易见的。我有一个用parametrs和constructor组织的类,但我不能在main中从该类调用任何方法。我想,这可能是smth的名单通过

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