@Scorpiored88

Как правильно создать класс в Python?

Создаю клас :
class settup():

    def __init__(self, host, user, password):
        self.host = host
        self.user = user
        self.password = password
    def connect(self):
        try:
            self.a = Core(self.host)
        except:
            print '------ please check ip and try again -------'
            return False
        else:
            print '------ connected saccesseful -------'
            self.a.login(self.user, self.password)
            return True


Ну и потом работаю с ним
s = settup(host, user, uspass)
if s.connect():
    print '==== what would you like to do ? ===='
    while True:
        do = raw_input('*** set up tunel press => 1 , check tunel press => 2  or press q to quit ***\n')
        if do == '1':
            local = raw_input('enter physical addres of this room => ')
            s.ip_sec(local)
            break
        elif do == '2':
            s.check_tunel()
            break
        elif do == 'q':
            print 'bay :)'
            break
sys.exit(0)


Вначале хотел обойтись без функции connect в классе settup а код с try поместить в __init__ но при попытке вернуть True или False от туда получал ошибку,что int может возвращает только None
Сейчас все работает, но правильно ли ?
Python 2.7
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 2
@deliro
0) PEP8 по тебе плачет
1) settup? Что за слово такое?
2) self.a что такое?
3) uspass что такое?
4) do == '1'? do - это глагол и им называют методы и функции, а не переменные.
5) print 'bay'? Какая связь между твоим кодом и бухтой?
6) В методе connect блок else не обязателен. Можно под в конец try поместить return True
7) Наследуй класс от object
8) Создай поле класса connected и назначай ему True или False и проверяй в методе connect (if not self.connected). Так можно избавиться от множественных "коннектов"
9) except без класса глупо писать, ибо пропускается даже SyntaxError.

Это на первый взгляд.
Ответ написан
Комментировать
svfat
@svfat
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
Все правильно __init__()не может возвращать значения, если вы хотите что бы при создании объекта вашего класса возвращалось значение используйте __new__():

class MyClass(object):
    def __init__(self):
        print u"не будет вызвано"
    def __new__(cls):
        return 42

obj = MyClass()
print obj
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы