2015-02-22 3 views
0

Мне сложно суммировать мой вопрос, поэтому я приношу свои извинения, если это дубликат.Расширение атрибута класса в Python

У меня есть класс, как например:

class MyClass: 
    timer = 60 

Я хочу timer представлять собой целое число, но и расширить некоторые пользовательские методы. Например:

>>> c = MyClass() 
>>> c.timer 
60 
>>> c.timer.wait() # This would wait 60 seconds 
True 
>>> c.timer 
0 

Как это сделать в Python?

+0

Почему? Что ты пытаешься сделать? – thefourtheye

+0

a и b являются переменными класса, а не экземпляром. Я не думаю, что это ваше намерение, не так ли? – Marcin

+0

Отредактировано для наглядности. –

ответ

0

Не уверен, что вы пытаетесь достичь, но ваш MyClass может быть реализован следующим образом:

class MyClass: 
    def __init__(self): 
     self.a = 0 
     self.b = 0 

    def do_some_operation(self): 
     # do something using a and b 
     # and return True if success 
     self.a += 100; 
     return True 


c = MyClass() 
print(c.do_some_operation()) # True 
print(c.a)     # 100 
0

Может быть, вы должны попробовать сделать класс, который имитирует целые числа:

class Integer: 
    value = 0 
    def __init__(self, value): 
     self.value = value 

    def __add__(self, other): 
     return Integer(self.value + other.value) 
    #Would need to do the other basic arithmetic things. I'll leave that to you... 

    def __str__(self): 
     return str(self.value) 

    def do_some_operation(self): 
     return True 



class MyClass: 
    a = Integer(0) 
    b = Integer(0) 


c = MyClass() 

print c.a 
print c.b 

print c.a + c.b 

print c.a.do_some_operation() 

Придает :

Я был бы осторожен в этом. Может быть еще один подходящий способ.

+0

Как бы я выполнил: 'c.a == 60'? –

+0

Вам нужно будет реализовать детали 'do_some_operation' (и изменить его' wait') – Dair