Как добавить новую функцию для класса, который был создан ранее? - PullRequest
0 голосов
/ 12 марта 2012

Так же, как сказал заголовок.Например: у меня есть такой класс:

class NewClass():
    def func1():
        .....

, затем я хочу добавить новую функцию в этот класс при запуске файла программы.точно так же, как переназначить новое значение атрибуту класса.например,

NewClass.a = 3

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

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

>>> class Quz(object):
...     def __init__(self):
...         self.a = "A"
...
>>> def qux(self):
...     print self.a
...
>>> Quz.qux = qux
>>> q = Quz()
>>> q.qux()
A

Вы можете использовать types.MethodType() для создания метода привязанного экземпляра, если хотите добавить функцию только в один экземпляр класса:

>>> import types
>>> class Foo(object):
...     def __init__(self):
...         self.a = "A"
...
>>> def bar(self):
...     print self.a
...
>>> f = Foo()
>>> f.bar = types.MethodType(bar, f, Foo)
>>> f.bar()
A
0 голосов
/ 12 марта 2012

Это тот же процесс, что и при добавлении атрибута, не являющегося типом функции:

Для общего класса:

>>> class Foo(object):
...   pass
>>> Foo.baz = lambda self: "Foobaz"
>>> f = Foo()
>>> f.baz()
'Foobaz'

РЕДАКТИРОВАТЬ :

Вот что нужно сделать , а не , если только вы не восхитительно ленивы, не знаете и не заботитесь о последствиях, на которые Эмбер указывает в своем комментарии ниже.

Например:

>>> bar = Foo()
>>> bar.biz = lambda: "barbiz"
>>> bar.biz()
'barbiz'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...