Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2015 21:34:22

skripka696
Зарегистрирован: 2015-04-10
Сообщения: 42
Репутация: +  1  -
Профиль   Отправить e-mail  

кортеж

Есть кортеж
def __init__(self,*arg):
self.arg=arg

как реализовать def __sub__(self, *n):
что бы создался новый кортеж с заданным количеством элементов!

Офлайн

#2 Апрель 18, 2015 22:30:48

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

кортеж

Как то так…

class c():
    def __init__(self, *args):
        self.args = args
    def __sub__(self, n):
	return c(self.args[:n])
if __name__ == '__main__':
    b = c(1, 2, 3, 4)
    d = b - 2
    print(d.args)

Отредактировано Romissevd (Апрель 18, 2015 22:31:37)

Офлайн

#3 Апрель 19, 2015 21:59:11

skripka696
Зарегистрирован: 2015-04-10
Сообщения: 42
Репутация: +  1  -
Профиль   Отправить e-mail  

кортеж

Romissevd
А вот подскажите, в моем случае, у меня в кортеже есть композиция из разных фигур, мне надо чтоб когда я в итоге писала с-1 программа отнимала одну фигуру: Вот я сделала такой код:

class Composite(Shape):
    def __init__(self,*arg):
        self.arg=arg
    def __sub__(self, n):
        return Composite(self.arg[:4-n])
     def draw(self):
        for i in self.arg:
            i.draw()
colors=['blue','green','yellow','pink','red']
a=[
    Triangle((0,-10),turtle.Turtle(),colors[random.randrange(0,5)], size=25),
    Circle((50,10),turtle.Turtle(),colors[random.randrange(0,5)], size=50),
    Triangle((-70,-30),turtle.Turtle(),colors[random.randrange(0,5)], size=60),
    Circle((150,30),turtle.Turtle(),colors[random.randrange(0,5)], size=75),
]
c=Composite(*a)
d = c-2
print(d.arg)
c.draw()
print(d.arg) - хранит правильное число фигур, но вывести я это не могу(((
подскажите пожалуйста как?

Отредактировано skripka696 (Апрель 19, 2015 21:59:45)

Офлайн

#4 Апрель 19, 2015 22:10:54

skripka696
Зарегистрирован: 2015-04-10
Сообщения: 42
Репутация: +  1  -
Профиль   Отправить e-mail  

кортеж

skripka696
RomissevdА вот подскажите, в моем случае, у меня в кортеже есть композиция из разных фигур, мне надо чтоб когда я в итоге писала с-1 программа отнимала одну фигуру: Вот я сделала такой код:


Если делаю вот так:
c=Composite(*a)
d = c-2
z = Composite(*d)
z.draw()
то выдает такую ошибку:
Traceback (most recent call last):
File “/home/user/py/oop5.py”, line 72, in <module>
z = Composite(*d)
TypeError: type object argument after * must be a sequence, not Composite

Офлайн

#5 Апрель 19, 2015 22:53:08

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

кортеж

skripka696
print(d.arg) - хранит правильное число фигур, но вывести я это не могу(((
что именно вам нужно? список оставшихся фигур???
skripka696
z = Composite(*d)
что хранит d?

Офлайн

#6 Апрель 19, 2015 22:55:38

skripka696
Зарегистрирован: 2015-04-10
Сообщения: 42
Репутация: +  1  -
Профиль   Отправить e-mail  

кортеж

Romissevd
нет, он как раз и хранит количество оставшихся фигур, мне надо было их нарисовать,
спасибо, у меня только что уже получилось это сделать!)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version