Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python: члены объекта-функции. Что это? / 24 сообщений из 24, страница 1 из 1
14.06.2013, 15:58
    #38298014
ilya.maserov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
Почему этот код не падает? Почему последняя строчка имеет смысл и какой?

Код: python
1.
2.
3.
4.
5.
def index( x ):
    print ( str(x) + "..." )


index.sobaka = True
...
Рейтинг: 0 / 0
15.06.2013, 13:19
    #38298578
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ilya.maserovПочему этот код не падает?
а почему должен то?
...
Рейтинг: 0 / 0
17.06.2013, 10:52
    #38299528
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHookilya.maserovПочему этот код не падает?
а почему должен то?
Нет, а что это за такое? Ладно функция - объект, но что за гибрид получается, когда я этому объекту какой-то мембер ещё меняю? Или функция - это просто объект класса, у которого есть operator() (в C++ - нотации, незнаю как это в Питоне называется).
...
Рейтинг: 0 / 0
17.06.2013, 10:58
    #38299541
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2FishHookпропущено...

а почему должен то?
Нет, а что это за такое? Ладно функция - объект, но что за гибрид получается, когда я этому объекту какой-то мембер ещё меняю? Или функция - это просто объект класса, у которого есть operator() (в C++ - нотации, незнаю как это в Питоне называется).
В питоне вообще всё объекты, даже классы.
Я тебя сейчас вообще шокирую
Код: python
1.
2.
3.
x = lambda _:_
x.foo="asda"
print x.foo
...
Рейтинг: 0 / 0
17.06.2013, 10:59
    #38299548
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
Код: python
1.
2.
3.
4.
x = type("New_class", (), {})
print x
x.foo="asdasd"
print x.foo
...
Рейтинг: 0 / 0
17.06.2013, 11:00
    #38299551
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2Или функция - это просто объект класса

Код: python
1.
2.
3.
def foo():pass

print dir(foo)
...
Рейтинг: 0 / 0
17.06.2013, 11:08
    #38299567
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
То, что всё - объект - вроде помню, а что можно на любой объект навешать любых новых мемберов - это новость.

Фишхук, а как любой объект превратить в функцию? Ну то есть, чтобы всё его содержимое не поменялось, но чтобы ещё и вызывать его можно было?

И ещё один вопрос - назови несколько самых суровых тем питона, чтобы я о них почитал и возгордился сильно.
...
Рейтинг: 0 / 0
17.06.2013, 11:12
    #38299577
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Foo(object):
    def __call__(self):
        print "I`m calling"




foo = Foo()
foo()
...
Рейтинг: 0 / 0
17.06.2013, 11:13
    #38299581
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHook
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Foo(object):
    def __call__(self):
        print "I`m calling"




foo = Foo()
foo()



Ага, я посмотрел dir() из примера выше... Круто, как всё в питоне открыто.
...
Рейтинг: 0 / 0
17.06.2013, 11:14
    #38299583
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2И ещё один вопрос - назови несколько самых суровых тем питона, чтобы я о них почитал и возгордился сильно.
почитай про метапрограммирование
...
Рейтинг: 0 / 0
17.06.2013, 11:14
    #38299586
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2То, что всё - объект - вроде помню, а что можно на любой объект навешать любых новых мемберов - это новость.
можно запретить
...
Рейтинг: 0 / 0
17.06.2013, 11:15
    #38299589
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHookThinkTwise2И ещё один вопрос - назови несколько самых суровых тем питона, чтобы я о них почитал и возгордился сильно.
почитай про метапрограммирование
Ну без экстрима...
...
Рейтинг: 0 / 0
17.06.2013, 11:18
    #38299596
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHookThinkTwise2То, что всё - объект - вроде помню, а что можно на любой объект навешать любых новых мемберов - это новость.
можно запретить

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
import datetime

class Foo(object):
    def method(self):
        return datetime.date.today()

    def __setattr__(self, key, value):
        if not key in self.__dict__:
            print "fuck you"
            return
        super(Foo, self).__setattr__(key, value)




foo = Foo()
print foo.method()

foo.another = "gg"
print foo.another
...
Рейтинг: 0 / 0
17.06.2013, 11:20
    #38299599
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2FishHookпропущено...

почитай про метапрограммирование
Ну без экстрима...
дескрипторы, декораторы,
...
Рейтинг: 0 / 0
17.06.2013, 11:21
    #38299603
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHookThinkTwise2пропущено...

Ну без экстрима...
дескрипторы, декораторы,
Дектораторы в пятницу изучил )
...
Рейтинг: 0 / 0
17.06.2013, 11:21
    #38299605
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2FishHookпропущено...

дескрипторы, декораторы,
Дектораторы в пятницу изучил )

читани
...
Рейтинг: 0 / 0
17.06.2013, 11:25
    #38299618
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
И вот тебе задачка, чтобы голову поломать
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
def split_list(lst, n):
    return zip(*[iter(lst)] * n)



l = [1,2,3,4,5,6,7,8,9]

for i in range(1,9):
    print split_list(l,i)


как это работает :)
...
Рейтинг: 0 / 0
17.06.2013, 11:51
    #38299690
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
в первом посте члены не причем, просто переопределяется значение переменной из функции в объект
...
Рейтинг: 0 / 0
17.06.2013, 11:58
    #38299696
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
Герой дняв первом посте члены не причем, просто переопределяется значение переменной из функции в объект
Э-э-э, функция ведь тоже объект. Объект с методом __call__, нет разве?
...
Рейтинг: 0 / 0
17.06.2013, 12:34
    #38299773
Герой дня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
ThinkTwise2Герой дняв первом посте члены не причем, просто переопределяется значение переменной из функции в объект
Э-э-э, функция ведь тоже объект. Объект с методом __call__, нет разве?

подумал, может ты и прав
...
Рейтинг: 0 / 0
17.06.2013, 12:48
    #38299807
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
кстати, __call__() у функции вполне вызывается напрямую

Код: python
1.
2.
3.
4.
def foo():
    print "aa"

foo.__call__()
...
Рейтинг: 0 / 0
17.06.2013, 13:32
    #38299897
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHookкстати, __call__() у функции вполне вызывается напрямую

Код: python
1.
2.
3.
4.
def foo():
    print "aa"

foo.__call__()


Ага, я тут эксперименты, мать их, ставлю..

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
import sys, os

class FishHook(object):
    
    def __init__(self):
        self.val = 555
    
    def __get__(self, obj, objtype):
        print ("__get__, " + str(obj))
        return self.val
        
    def __set__(self, obj, value):
        print ("__set__, " + str(obj) + ", " + str(value))
        self.val = value
        
    def __repr__(self):
        return "F " + str(self.val)


class Foo(object):
    val = FishHook()
    
    def __init__(self):
        self.bz = 0
    
    def __call__(self):
        self.bz = self.bz + 1
        return self.bz
    

f = Foo()

print ( f.val )
print ( f() )
print ( f() )
print ( f(), f(), f() )
...
Рейтинг: 0 / 0
17.06.2013, 17:46
    #38300471
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
FishHook, я хочу поймать переменное число аргументов в Питоне. Оказывается их можно ловить 2 способами и каждый для разных видов блюд?


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
# 1)
def func(**args):
    # работает, когда юзер пишет func( sobaka = 1, juno = 2 )
    pass

# 2)
def func( *args ):
    # args - ('t', 'u', 'p', 'l', 'e') - positional arguments
    # работает, когда юзер пишет func( 1,2,3,4 )
    pass



И оба этих способа несовместимы? Точнее, **args вызовет ошибку, если юзер попытается вызвать func ( 1, 2, 3, 4 ) ?
...
Рейтинг: 0 / 0
17.06.2013, 17:59
    #38300498
ThinkTwise2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python: члены объекта-функции. Что это?
1) positional arguments
2) keyword arguments

вроде дошло
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python: члены объекта-функции. Что это? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]