列表未传递给主类

时间:2017-06-19 16:02:55

标签: python list function class

抱歉,我是Python新手,我明白答案应该是显而易见的。我有一个用参数和构造函数组织的类,但我不能在main中调用该类中的任何方法。我想,这可能与列表传递有关。

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

编辑: 现在我将它们改为私有,我可以访问这些字段,但仍然没有这些方法。

    def __init__(self,nameSet,hoursNeed,daysOff):
    self.nameSet=nameSet
    self.hoursNeed=hoursNeed
    self.daysOff=daysOff

1 个答案:

答案 0 :(得分:0)

使用任何方法时,您可能会获得AttributeError,因为他们尝试访问的变量根本不存在:

您在构造函数中初始化的成员与您尝试在其他方法中使用的成员完全不同:self.__nameSetself.nameSet不同,self.__daysOff不是与self.daysOff等相同。

此外,您不应该使用可变对手作为默认参数(不要在构造函数中使用nameSet=[]等)。