Форум сайта python.su
Начал изучать классы
Вот создал первый класс по учебнику
>>> def f1(self,x,y):
return min(x,x+y)
>>> class C:
f = f1
def g(self):
return"I_LOVE_YOU"
h=g
C.h()
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
C.h()
TypeError: unbound method g() must be called with C instance as first argument (got nothing instead)
>>> C.f(5,7)
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
C.f(5,7)
TypeError: unbound method f1() must be called with C instance as first argument (got int instance instead)
Отредактировано (Июль 21, 2010 21:55:40)
Офлайн
Я так понял вам нужно что то вроде этого:
class C:
def g(self):
return "I_LOVE_YOU"
def f1(self,x,y):
return min(x,x+y)
print C().g()
print C().f1(1,2)
Отредактировано (Июль 21, 2010 22:36:14)
Офлайн
тоесть для вызова метода моего класса нужно также вводить скобки после класса?
в книге об этом ни слова
Офлайн
Я не знаю зачем, и кому это нужно, но есть несколько способов так сделать, например:
def f1(self, x, y):
return min(x,x+y)
class C:
f = lambda self, x, y: f1(self, x, y)
h = lambda self: self.g()
def g(self):
return "your provocative string"
print C().f(1, 2)
print C().h()
Офлайн
Alex_Kutsan
Скобки после класса - это собственно создание экземпляра класса.
print C().g()
c = C()
print c.g()
Офлайн
Если нужно вызвать метод КЛАССа, а не метод ЭКЗЕМПЛЯРа:
class Baz:
@classmethod
def foo(cls):
print 'class -> %r'%cls
def bar(self):
print 'instance -> %r'%self
print 'class -> %r'%self.__class__
Отредактировано (Июль 22, 2010 07:22:46)
Офлайн
Так немного понятнее , огромное спасибо
Офлайн