Установка отдельных экземпляров класса для ввода из метода класса

#python #python-3.x #oop

Вопрос:

Я работаю над своего рода игрой на основе терминала, и я хочу, чтобы у игроков был более личный опыт, позволяя им выбирать имена своих персонажей. Я узнал, что могу использовать метод класса для определения входных данных для всех атрибутов объекта; однако, если я хочу сделать это только для одного, как бы я это сделал? Что у меня есть для объектов и экземпляров, так это:

 import random as rand
class Character:
    def __init__(self, characterType, name, damage, health, points):
        self.characterType = characterType
        self.name = name
        self.damage = damage
        self.health = health
        self.points = points
    @classmethod
    def get_name(cls):
        return cls(
            self.characterType,
            input("Enter your {self.characterType}'s name. ".format, self.characterType),
            self.damage,
            self.health,
            self.points,
        )
 

Комментарии:

1. Вы пометили это, python-3.x но используете raw_input . Вы используете python 2 или 3?

2. Концепция здесь ошибочна. Когда вы запускаете метод класса, «я»отсутствует. Все, что у вас есть, — это тип класса.

Ответ №1:

Это не должно быть частью занятия. Позвольте классу управлять поведением, позвольте звонящему решить политику и ввод/вывод, поэтому:

 
import random as rand
class Character:
    def __init__(self, characterType, name, damage, health, points):
        self.characterType = characterType
        self.name = name
        self.damage = damage
        self.health = health
        self.points = points

name = input(f"Enter your {characterType}'s name:")
newchar = Character( characterType, name, damage, health, points )
 

Комментарии:

1. Сначала у меня было это решение; однако, когда я создаю более одного объекта, мне придется создать другую переменную имени

2. Ну, вы, конечно, будете спрашивать у каждого нового пользователя его имя. Переменная «имя» ничего не значит; строка хранится в объекте.