Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2013 05:56:08

Pytophone
От: Владивосток
Зарегистрирован: 2013-11-01
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в создании класса

Есть класс-анкета.
Возникла проблема, когда вводится партнёр, то статус с “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.

Офлайн

#2 Ноя. 7, 2013 06:49:16

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Ошибка в создании класса

Я думам вам надо делать подобное на уровне преобразования в строку, иначе я как то не представляю задуманное

# -*- 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]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Ноя. 7, 2013 06:49:58)

Офлайн

#3 Ноя. 7, 2013 06:57:15

Pytophone
От: Владивосток
Зарегистрирован: 2013-11-01
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка в создании класса

Спасибо большое. Однако, не понял сам процесс, механику изменения.

'Not Free' if self.partner else ‘Free’ можно понять как: ‘Not Free’ если self.partner “True”, то есть указан. Иначе - идет обозначение ‘Free’.
Всё верно я понял?

Офлайн

#4 Ноя. 7, 2013 07:05:10

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Ошибка в создании класса

Pytophone
не совсем, применение шире. if object возвращает True если объект не пустой, это может быть не пустая строка, список, лист, другой объект у которого определено это. Если надо непосредственно сравнение с True, то запись будет выглядеть так:

'Not free' if self.partner==True else 'Free'



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Ноя. 7, 2013 08:49:39

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Ошибка в создании класса

('Free', 'Not Free')[self.partner]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version