Использование метода класса в __init__ - PullRequest
1 голос
/ 17 января 2012

У меня есть следующий класс, где я хочу использовать метод location_change в пределах __init__ для этого класса.Есть ли способ сделать это?Пример, который я использую ниже, является упрощением, но мне нужно использовать метод класса для преобразования некоторых данных конструктора.Можно ли это сделать в python?

class dummy:

    def __init__(self):

        self.location = 'USA'
        print(self.location)

        location_change()
        print(self.location)

    def location_change():

        self.location = 'UK'


first_dummy = dummy()

Ответы [ 3 ]

5 голосов
/ 17 января 2012

Конечно, может!

self.location_change()

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

def location_change(self):

вводный урок по oop в Python http://www.voidspace.org.uk/python/articles/OOP.shtml

документация http://docs.python.org/tutorial/classes.html

3 голосов
/ 17 января 2012

Попробуйте это

class Dummy:

    def __init__(self):

        self.location = 'USA'
        print(self.location)

        self.location_change()
        print(self.location)

    def location_change(self):

        self.location = 'UK'


first_dummy = Dummy()
1 голос
/ 17 января 2012
class Dummy:

    def __init__(self):

        self.location = 'USA'
        print(self.location)
        Dummy.location_change(self)
        print(self.location)

    def location_change(self):

        self.location = 'UK'


first_dummy = Dummy()
print(first_dummy)

Что вам нужно было сделать, так это сказать "location_change", что он работает с аргументом self.В противном случае это неопределенная переменная.Вам также нужно было использовать имя класса при его вызове.Это должно дать вам:

USA
UK
<__main__.Dummy object at 0x1005ae1d0>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...