Найти - Пользователи
Полная версия: создание объекта внутри класса
Начало » Python для новичков » создание объекта внутри класса
1
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)
lobster
У меня получилось что то вроде:
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()
а не заворачивая в метод, автоматом можно?
FishHook
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()
lobster
Спасибо FishHook!
Как раз этого не хватало!
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