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


Автор: HellanD 31.8.2006, 15:25

Вот код:
Код

import os
class EvilSideOfTheForce:
    OutError=1
    Inputs=''
        def printer(self):
             print 'Hello'+OutError

Alf=EvilSideOfTheForce()
Alf.Inputs=10
Alf.printer()


Надо чтоб напечаталась переменная OutError а он мне пишет что глобальная переменная OutError не задана!
Вот так :
    print 'Hello'+OutError
NameError: global name 'OutError' is not defined

И вообще проясните мне картину правильно ли задан класс? Переменные OutError=1 и  Inputs=''
члены класа.

Автор: slav0nic 31.8.2006, 15:42
print self.OutError

Добавлено @ 15:43 
и не print 'Hello'+OutError, а  print 'Hello'+str(self.OutError)

Автор: pythonwin 31.8.2006, 15:49
Код

import os
class EvilSideOfTheForce:
    OutError=1
    Inputs=''
    def printer(self):
        print 'Hello'+str(self.OutError)
Alf=EvilSideOfTheForce()
Alf.Inputs=10
Alf.printer()


вот так должно работать. smile

Добавлено @ 15:56 
Код

import os
class EvilSideOfTheForce:
    OutError=1
    Inputs=''
    def __init__(self, kw):
        for k in kw.items(): setattr(self, k[0], k[1])
    def printer(self):
        print 'Hello'+str(self.OutError)
Alf=EvilSideOfTheForce(Inputs=10, OutError=2)
Alf.printer()


А вот так наверное лучше будет. smile

Автор: HellanD 31.8.2006, 16:12
Посмотри плиз такое:
Код

import os
class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,imp):
        self.OutError,self.Input=os.popen4(imp)
        
    def printer(self):
        print 'OutPut and Error : '+self.OutError +'\n '
   
Alf.showMeStandPuts('uname')
Alf.printer()


 Такая (def showMeStandPuts(self,imp)smile пишет про ошибку с параметрами
И еще зачем нужен self?? єто как в С this??Для того что б обьект мог внутри себя задать переменные?

Автор: pythonwin 31.8.2006, 16:26
Код

import os
class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,imp):
        self.OutError,self.Input=os.popen4(imp)
    def printer(self):
        print 'OutPut and Error : '+str(self.OutError) +'\n '
Alf=EvilSideOfTheForce()
Alf.showMeStandPuts('uname')
Alf.printer()


HellanD, немного изменил - теперь работает! smile

Добавлено @ 16:28 
Цитата(HellanD @  31.8.2006,  23:12 Найти цитируемый пост)
И еще зачем нужен self?? єто как в С this??Для того что б обьект мог внутри себя задать переменные? 

ДА! smile

Автор: HellanD 31.8.2006, 16:32
Мне он пишет
TypeError: showMeStandPuts() takes exactly 1 argument (2 given)

Добавлено @ 16:41 
Или ну вот хотя б такое:
Код

import os
class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,arg):
        print arg
        
Alf.showMeStandPuts('Lodka')



Автор: pythonwin 1.9.2006, 07:00
Цитата(HellanD @  31.8.2006,  23:32 Найти цитируемый пост)
Мне он пишет
TypeError: showMeStandPuts() takes exactly 1 argument (2 given)

а на какую строку он "ругается"?

Автор: albertn 1.9.2006, 08:40
У тебя еще код не полностью записан. Запиши его полностью, может быть ошибка станет более понятной.

Автор: pythonwin 1.9.2006, 08:50
Код

>>> import os
>>> 
>>> class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,arg):
        print arg

        
>>> Alf=EvilSideOfTheForce()
>>> Alf.showMeStandPuts('Lodka')
Lodka
>>> 


или 
Код

import os
class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,arg):
        print arg
print EvilSideOfTheForce().showMeStandPuts('Lodka')


IMHO, что ты не определяешь 
Код
Alf=EvilSideOfTheForce()
, и поэтому метод не видит self smile

Автор: HellanD 1.9.2006, 09:19
Помогите плиз..
Я перехожу на питон с С++
Там было так:

class XXX{
private:
variables...
public:
functions....
};

Напишите мне тут как изменится структура (по мануалам не очень ясно...)
Мне нада чтоб в классе были переменные и желательно чтоб был конструктор который бы их заполнял
И еще про self
Что єто такое.... и с чем его есть :-) Мы что к любым переменным в классе должны обброащатся self DOT ???
Спасибо за ответ

Цитата

Python 
1:

 Alf=EvilSideOfTheForce()

 
 

, и поэтому метод не видит self  


Так и было :-) Я его стер нечайно....:-(!!!!!!

Автор: pythonwin 1.9.2006, 09:26
пример у меня работает:
Код

import os
class EvilSideOfTheForce:
    OutError=''
    Input=''
    def showMeStandPuts(self,arg):
        print arg
print EvilSideOfTheForce().showMeStandPuts('Lodka')



Автор: HellanD 1.9.2006, 09:47
Как мне передать в конструктор какието значения для заполнения???
Помогите плиз

Добавлено @ 10:00 
Будет ли такое работать?
Вот код
Код

import os
class PKI:
    def __init__(self,arg):
        self.Input,self.outWitErrors=os.popen4(arg)
        self.INP=Input.read()
        self.OUT=outWitErrors.read()
      


x=PKI('uname....')

    

Автор: pythonwin 1.9.2006, 10:20
Код

import os
class EvilSideOfTheForce:
    OutError=1
    Inputs=''
    def __init__(self, kw):
        for k in kw.items(): setattr(self, k[0], k[1])
    def printer(self):
        print 'Hello'+str(self.OutError)
Alf=EvilSideOfTheForce(Inputs=10, OutError=2)
Alf.printer()

Автор: pythonwin 1.9.2006, 10:54
HellanD, у тебя ошибка вот здесь:

Код

        self.Input,self.outWitErrors=os.popen4(arg)
        self.INP=Input.read()


Цитата


Traceback (most recent call last):
  File "<pyshell#47>", line 1, in ?
    x=PKI('uname....')
  File "<pyshell#46>", line 8, in __init__
    self.INP=self.Input.read()
IOError: [Errno 9] Bad file descriptor


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