В Python как я могу создать метод в классе, который присваивает значения атрибутам

#python #class #methods #instantiation #init

#python #класс #методы #создание экземпляра #инициализация

Вопрос:

Я хочу запустить метод, который присваивает значения объекту, а не объявляет их в круглых скобках. У меня есть следующий код, который не работает. Я открыт для всех решений, включая те, которые включают методы, содержащиеся в конструкторе.

 class Player:
    def __init__(self, name): 
        self.name = name
        
    #gather player detail method

    def player_details():
        return input('Name: ')

player1 = Player.player_details()
#I want the following line of code to output whatever the player name was entered as
print (player1.name)
  

Ответ №1:

ПОПРОБУЙТЕ этот код, используя getter setter

class Player: def init(self,name=»»): self.name = имя

метод получения

def get_player_details(self): возвращает self.name

метод установки

определение set_player_details(self, x): self.name = x

player1 = Player()

установка возраста с помощью setter

input_detail = input(«Введите имя игрока: «)

#установить ввод в качестве детали игрока player1.set_player_details(input_detail)

получение возраста с помощью getter

print(player1.get_player_details())

печать (player1.name )

Ответ №2:

Это то, что вы ищете? Похоже, вы случайно создали свой метод как «статический метод», то есть тот, который не обращается к атрибутам класса. Вы можете изменить это, добавив ‘self’ в качестве аргумента.

 class Player:
        def __init__(self, name): 
            self.name = name
            
        #gather player detail method
    
        def player_details(self):
            self.name = input('Name: ')
    
player1 = Player.player_details()
# I want the following line of code to output whatever the player name was entered as
print (player1.name)
  

Ответ №3:

Здесь вы можете просто назначить как обычное свойство:

 def player_details(self):
    self.name = input('Name: ')
  

Или вы также можете получить аргумент:

 def player_details(self, newName):
    self.name = newName
  

Ответ №4:

Выполнение этого достигло того, чего я хотел, спасибо.

 class Player:
        def __init__(self, name =""): 
            self.name = input('Name: ')
            
    
#creating an instance of the Player class prompts the user to input name
#say I input "Jo"
player1 = Player()

#prints out "Jo"
print (player1.name)