Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2011 08:35:19

de-signer
От:
Зарегистрирован: 2011-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

Привет.

Я сам не пишу на Python, но надо передрать с него алгоритм. Основы я понимаю но бывают фишки.
1.

def someproc(self):
param = self.param
Что будет в переменной param? Она не была ни объявлена ни инициализирована каким нибудь способом.

2. pass = ничего не делать, идти дальше?



Офлайн

#2 Май 20, 2011 09:02:13

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Пара вопросов

В питоне ничего не объявляется, все только инициализируется
pass да ничего не делать



Офлайн

#3 Май 20, 2011 09:05:04

de-signer
От:
Зарегистрирован: 2011-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

class Loader(GenericLoader):

def __init__(self, file, filename, match):
GenericLoader.__init__(self, file, filename, match)
self.fix_tile = None
self.fix_clip = 0
self.fix_lens = ()
self.object = None
self.filename =filename
self.verbosity=False
self.info = None
self.file=file

........

def import_curves(self):
for obj in self.info.paths_heap:
if obj==1:
self.begin_group()
elif obj==0:
self.end_group()
else:
style = self.style <--------------это как понимать?
if obj.colorIndex:
if self.info.fill_data.has_key(obj.colorIndex):
style.fill_pattern = SolidPattern(self.info.fill_data[obj.colorIndex])
else:
style.fill_pattern = EmptyPattern
else:
style.fill_pattern = EmptyPattern
Loader.style не определён в классе.
self подразумевает Loader
Никак не въеду в строку Loader.style=Loader.style - это что? Индийский способ инициализации переменной?



Офлайн

#4 Май 20, 2011 09:15:03

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

style скорее всего в GenericLoader объявлен.
style = self.style - Кто то буквы экономит походу.



Офлайн

#5 Май 20, 2011 09:19:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Пара вопросов

self подразумевает экземпляр объекта а не Loader- который класс
style = self.style - инициализация локальной в import_curves переменной style



Офлайн

#6 Май 20, 2011 09:19:44

de-signer
От:
Зарегистрирован: 2011-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

Точно… Наследование… Совсем перегрелся…
Спасибо.



Офлайн

#7 Май 20, 2011 11:12:41

de-signer
От:
Зарегистрирован: 2011-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

class MyClass:
name=''
def __init__(self, name='', duplicate=None, **kw):
...
for key, value in kw.items():
setattr(self, key, value)

def Copy(self):
1 return self.__class__.(duplicate=self)
2 return MyClass(duplicate=self)
def IsEmpty(self):
return not self.__dict__
1. Что за определение **kw? Что означают две звёздочки? Указатель на указатель или в Python они имеют другой смысл?
2. Пронумерованые строки: в оригинале 1 , почему нельзя написать 2
3. Какой сакральный смысл в методе IsEmpty? __dict__ уже не пуст. Там как минимум переменная name.
4. В чем различие между var = {} и var = . Квадратные скобки - пустой массив, а фигурные?

Заранее благодарен за ответы.



Отредактировано (Май 20, 2011 11:27:31)

Офлайн

#8 Май 20, 2011 13:00:24

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

1. **kw - это именованные аргументы (http://ru.wikibooks.org/wiki/%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_Python_2.6#.D0.98.D0.BC.D0.B5.D0.BD.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D1.8B.D0.B5_.D0.B0.D1.80.D0.B3.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D1.8B_.5B19.5D)
4. var = - просто массив
var = {} - ассоциативный массив



Офлайн

#9 Май 20, 2011 18:15:04

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

Пара вопросов

Не массив, а список. Не ассоциативный массив, а словарь. А вообще с такими вопросами лучше к Лутцу.
Люблю понудеть :)



Офлайн

#10 Май 21, 2011 13:07:46

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара вопросов

truporez
Не массив, а список. Не ассоциативный массив, а словарь. А вообще с такими вопросами лучше к Лутцу.
Люблю понудеть
Зачем же пугать человека непонятными словарями и списками? А если сказать ассоциативный массив и просто массив, то поймут все.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version