#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. Ну, вы, конечно, будете спрашивать у каждого нового пользователя его имя. Переменная «имя» ничего не значит; строка хранится в объекте.