יצירת instance מסטרינג

הי,
בתרגיל המאפיה הגדרתי ליסט של רולס

roles = [“Citizen”, “Cup”, “Killer”]

ומעוניין לייצר אינסטנסים בצורה דינאמית מהרולס האפשריים (לוקח רנדומלית).
הדרך שמצאתי היא עם הפקודה האסורה

player = eval(role)(user)

אשמח לקבל פתרון אלטרנטיבי מאשר לבדוק עם if’s

אתה יכול להשתמש בהם כמו שהם לא בstring … ואז הם ייצגו את המחלקות עצמן. למשל:

r = [Citizen, Cup, Killer]

ואז ליצור מופע כך:

r[0]('Aviad')

נגיד לקבל citizen בשם אביעד … לא יודע מה הכנסת שם לארגומנטים סתם עשיתי “שם” כדוגמא.
אבל כל ארגומנט יכול להיכנס שם.

3 לייקים

לא היית מעדיף להשתמש במילון, כך שתוכל לנקוב בשם, ולא באינדקס? (למען הסדר).

לייק 1

עם מילון כן הייתי יכול ליצור אינסטנס לפי השם?

כן…20תווים

זה עובד כמ משתנה אז כל מבנה נתונים יעבוד … ג םtuple לצורך העניין.
הבחירה איזה מהם תלויה באופן שאתה מרכיב את הקוד.

3 לייקים