Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Dao of newbie


Автор: V0evoda 2.5.2006, 18:08
 Здравствуйте.
 Не хочется захломлять форум (хотя форум питона и так не очень-то захламляется, ибо захламлять некомуsmile), поэтому, если модеры разрешат, выделю себе такую темку, где буду вопросы задавать в тайной надежде, что кто-нибудь, да ответит.

 Значит, из общего: установлены у мя Python 2.4.3 и PyScripter.

 Кое-чего уже знаю, так что (очень на это надеюсь) вопросы будут не совсем уж детские.

 Значит, появилась у меня проблема. Как и полагается, я убил на нее порядочно времени, но решить не смог:

 Программа в самом начале загружает модуль, далее идет простенький код и вызов функции из подключенного модуля.
 Функция в этом модуле использует randrange() из whrandom.
 a = randrange(b,c,d)
 Когда программа доходит до этой строки, то печатает следующую ошибку:
 NameError: global name 'randrange' is not defined

 Пробовал заменять, на gamma из random. Та же ерунда.

 Примерно такая программа:
------Mo1-----
import whrandom #написал для верности

def aga():
    zahotel = randrange(1, 100, 2)
    print zahotel

------Mo2------
import whrandom

def aga():
    zahotel = randrange(1, 100, 2)
    print zahotel
-------------

P.S. Тут, конечно, не функция, а процедура скорее должна быть... 

Автор: Void 2.5.2006, 18:16
К функции из импортированного модуля нужно обращаться как <имя модуля>.<функция>.
Код
import whrandom

def aga():
    zahotel = whrandom.randrange(1, 100, 2)
    print zahotel

Или
Код
from whrandom import randrange

def aga():
    zahotel = randrange(1, 100, 2)
    print zahotel

Или
Код
from whrandom import *

def aga():
    zahotel = randrange(1, 100, 2)
    print zahotel
 

Автор: V0evoda 2.5.2006, 20:06
 Спасибо большое, все, конечно же, оказалось простым smile Не обратил внимания. 

Автор: V0evoda 3.5.2006, 13:27
 Снова я. Никак не пойму, зачем нужен этот самый конструктор. Ну, т.е. написано, что он задает "объект с определенным начальным состоянием".("Язык программирования Питон", он же туторsmile)
 Но если у меня класс:

 class Castle:
    gold = 0
    citizen = 0
    food = 0
    armors = 0

 То конструтор не нужен? Все уже задано. Так я понимаю?
 
 Вот пример из cookbook:

Код

class Behave(object):
    def _ _init_ _(self, name):
        self.name = name
    def once(self):
        print "Hello,", self.name
    def rename(self, newName)
        self.name = newName
    def repeat(self, N):
        for i in range(N): self.once( )


 Вот непонятно мне, где определен этот self.name (как у него (у self) оказался этот атрибут?)
 Объясните, пожалуйста, про __init__ и self или укажите ссылочку, где об этом вразумительно написано и все разжевано. 

Автор: SAnty 3.5.2006, 17:43
посмотрите здесь

http://prog.org.ru/forum/topic_2764_9d81ad469fc5ed94f391601da144c953.html

 

Автор: V0evoda 3.5.2006, 22:24
SAnty,
 Спасибо, еще по теме почитал, более-менее разобрался кажется. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)