Как вызвать функцию класса в том же классе - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь вызвать get_data функцию класса myclass в том же классе, но она возвращает эту ошибку.

get_data () отсутствует 1 обязательный позиционный аргумент: 'self'

Как я могу вызвать get_data() функцию в классе?

class MyClass:
    def get_data(self):
        return(1)
    a = get_data()
ab = MyClass()
print(ab.a)

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

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

Я не уверен, что у вас на уме, но вы можете ссылаться на метод get_data как имя a (вместо вызова) и вызывать после создания экземпляра:

In [136]: class myclass: 
     ...:     def get_data(self): 
     ...:         return 1 
     ...:          
     ...:     a = get_data 
     ...:      
     ...: ab = myclass() 
     ...: print(ab.a())                                                                                                                                                                                     
1
0 голосов
/ 11 июля 2019

Используйте конструктор класса __init__

class MyClass:
    def __init__(self):
        self.a = self.get_data()

    def get_data(self):
        return(1)

ab = MyClass()
print(ab.a)

Также обратите внимание, что я прописал имя класса в соответствии с соглашением об именах классов Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...