Ich habe eine neue Klasse erstellt und ich versuche, dynamisch zu dieser Klasse hinzuzufügen, Ich habe eine Liste erstellt, die ich mehrere Objekte einfügen möchte, dann werde ich darüber iterieren Liste in Django (ist dies der richtige Weg, Dinge zu tun?)Hinzufügen zu einer Klasse dynamisch
aber ich bin die folgenden Fehler
TypeError: __init__() takes exactly 9 arguments (1 given)
ich weiß immer, was der Fehler bedeutet, ich bin nur gefragt, wie ich mich über die Schaffung eine neue Instanz meiner Objekte und fügen Sie es auf der Flucht leicht hinzu?
### create User Object
class User:
def __init__(self, Policy, Level, StartDate, EndDate, StartTime, EndTime, Name, Mobile):
self.Policy = Policy
self.Level = Level
self.StartDate = StartDate
self.EndDate = EndDate
self.StartTime = StartTime
self.EndTime = EndTime
self.Name = Name
self.Mobile = Mobile
def __init__(self):
pass
### Get all the Polices ###
lstOnCall = []
for objPolicy in objPolicyData['escalation_policies']:
strPolicyName = objPolicy['name']
if strPolicyName.lower().find('test') == -1:
for objOnCall in objPolicy['on_call']:
objUser = User()
objUser.Policy = strPolicyName
objUser.Level = objOnCall['level']
objUser.StartDate = getDate(objOnCall['start'])
objUser.EndDate = getDate(objOnCall['end'])
objUser.StartTime = getTime(objOnCall['start'])
objUser.EndTime = getTime(objOnCall['end'])
objUser = objOnCall['user']
objUser.Name = objUser['name']
objUser.Mobile = getUserMobile(objUser['id'])
lstOnCall.append(objUser)
print lstOnCall
UPDATE: Hinzufügen der unten funktioniert, ich muss nur wissen, wie jetzt die Einzelteile drucken?
def __init__(self):
pass
die unter
for item in lstOnCall:
print item()
kehrt
print item()
AttributeError: User instance has no __call__ method
Es ist 'print item' in Python 2 und' print (item) 'in Python 3. Nicht sicher, was die Absicht der Klammern nach' item' ist. – BallpointBen
Ich bin mir nicht sicher, was du machen willst. Außerdem benötigen Sie zwei Eingänge nicht. Wenn Ihre Klasse Parameter annimmt, sollten Sie tun, wie James es vorgeschlagen hat. –
Ich bin mir nicht sicher, warum Sie sie nicht in der Instantiierung übergeben. Sie haben die Daten genau dort; Warum also nicht 'objUser = Benutzer (strPolicyName, objOnCall ['level'], getDate (objOnCall ['start']))? –