Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2012 08:33:43

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

создание объекта внутри класса

Всем привет!
С ООП не особо знаком, подскажите как создать сабж

1 import urllib2
2 class GetJPG:
3 def __init__(self, urll):
4 self.urll = urll
5 self.f = object
6 self.f = urllib2.urlopen(self.urll)
пишет что: ‘self’ is not defined(6)



Отредактировано lobster (Май 28, 2012 08:35:22)

Офлайн

#2 Май 28, 2012 09:01:20

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

создание объекта внутри класса

У меня получилось что то вроде:

import urllib2
class GetJPG:
def __init__(self, urll):
self.urll = urll
self.f = object
def GetJPG(self):
self.f = urllib2.urlopen(self.urll)
print self.f.read()


jpg = GetJPG('http://wordstat.yandex.ru')
jpg.GetJPG()
а не заворачивая в метод, автоматом можно?



Офлайн

#3 Май 28, 2012 10:04:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

создание объекта внутри класса

lobster
Всем привет!
С ООП не особо знаком, подскажите как создать сабж
1 import urllib2
2 class GetJPG:
3 def __init__(self, urll):
4 self.urll = urll
5 self.f = object
6 self.f = urllib2.urlopen(self.urll)
пишет что: ‘self’ is not defined(6)
Естественно, self - это не какое-то магическое или зарезервированное слово, это просто общепринятое наименование ссылки на объект. В равной степени можно было бы написать
def __init__(pararuram, urll):
		pararuram.urll = urll
соответственно в своем коде ты пытаешься обратиться к параметру функции, вне функции.
Во-первых, к неприватным атрибутам можно обращаться напрямую.
Во-вторых удобно использовать свойства.

class Foo(object):
    def __init__(self, val):
        self.value=val
f=Foo(342342)
print f.value

class Foo(object):
    def __init__(self, val):
        self.value=val
   @property 
   def Value(self):
       return urllib2.urlopen(self.value)
f=Foo('http://wordstat.yandex.ru')
print f.Value.read()



Офлайн

#4 Май 28, 2012 10:28:13

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

создание объекта внутри класса

Спасибо FishHook!
Как раз этого не хватало!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version