Найти - Пользователи
Полная версия: Ошибка в создании класса
Начало » Python для новичков » Ошибка в создании класса
1
Pytophone
Есть класс-анкета.
Возникла проблема, когда вводится партнёр, то статус с “True” не меняется на “Not free”, как планировалось. Что упустил?

class Anketa:
	def __init__(self, name, age, partner):
		self.name = name
		self.age = age
		self.partner = partner 		#Партнёр или есть, или нет. (True/False)
		
	def __get__(partner): 			#Если партнёра нет, то выводится												
		if partner == (True):		        #в статусе "Free", и если партнёр есть, 
			partner = 'Not Free'	        #то статус меняется на "Not Free"
		if self.partner == False:
			partner = 'Free'	
		
	def __str__(self):
		return '[Mister %s, age: %s, status: %s]' %(self.name, self.age, self.partner)
		
		
ivan = Anketa('Ivan Erochin', age = 23, partner = True)
sveta = Anketa('Svetka Ivanova', age = 27, partner = False)
print (ivan)
print (sveta)

Сейчас выходит только так:

А в идеале должно в конце прописываться Free или Not Free.
JOHN_16
Я думам вам надо делать подобное на уровне преобразования в строку, иначе я как то не представляю задуманное
# -*- coding: utf-8 -*-
class Anketa:
    
    def __init__(self, name, age, partner):
        self.name = name
        self.age = age
        self.partner = partner
        
    def __str__(self):
        return '[Mister %s, age: %s, status: %s]' %(self.name, self.age, 'Not Free' if self.partner else 'Free')
        
        
ivan = Anketa('Ivan Erochin', age = 23, partner = True)
sveta = Anketa('Svetka Ivanova', age = 27, partner = False)
print (ivan)
print (sveta)
Результат:

[Mister Ivan Erochin, age: 23, status: Not Free]
[Mister Svetka Ivanova, age: 27, status: Free]
Pytophone
Спасибо большое. Однако, не понял сам процесс, механику изменения.

'Not Free' if self.partner else ‘Free’ можно понять как: ‘Not Free’ если self.partner “True”, то есть указан. Иначе - идет обозначение ‘Free’.
Всё верно я понял?
JOHN_16
Pytophone
не совсем, применение шире. if object возвращает True если объект не пустой, это может быть не пустая строка, список, лист, другой объект у которого определено это. Если надо непосредственно сравнение с True, то запись будет выглядеть так:
'Not free' if self.partner==True else 'Free'
Budulianin
('Free', 'Not Free')[self.partner]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB