Найти - Пользователи
Полная версия: питон требует значение для self
Начало » Python для новичков » питон требует значение для self
1
mansur
    
class class1(object):
    def methode1(self, num):
        self.num = num
check_methode = class1.methode1(num = 5)
print(check_methode)

#ошибка:
#Traceback (most recent call last):
# File “py.py”, line 4, in <module>
# check_methode = class1.methode1(num = 5)
#TypeError: methode1() missing 1 required positional argument: ‘self’
FishHook
mansur
Сначала надо создать объект класса.
mansur
FishHook
mansurСначала надо создать объект класса.
check_methode = class1.methode1(num = 5) <—-объект класса есть
Ocean
Ты вызываешь метод, которому требуется экземпляр класса, но сам экземпляр еще не создал

  
class Class1(object):
    """docstring"""
    def __init__(self, num):
        """конструктор класса, он же метод инициализации"""
        self.num = num
    def get_num(self):
        return self.num
    def method1(num):
        return "Я твой метод, которому нужен экземпляр класса"
    @staticmethod
    def static_method():
        print("Я твой статический метод")
    @classmethod
    def class_method(cls):
        print("Я твой классовый метод")
# Создаем объект и работаем с объектом
obj1 = Class1(num = 5)
# Вызвать можно двумя способами
print(obj1.num)
print(obj1.get_num())
# Пример метода, которому нужен объект
print(obj1.method1())
# Вызываем без создания объекта класса
Class1.static_method()
Class1.class_method()


Обрати внимание на вызов методов экземпляра класса, чтобы в синтаксисе потом не путаться. Если ты вызываешь метод get_num, то () нужны. Это как вызов функции.
Ocean
mansur
num - это динамический атрибут.
class1.methode1 - вызов метода.
Объект класса не создан. Какой свой код ты считаешь созданием объекта класса?

Очень простой способ проверить есть экземпляр класса или нет.
print(type(имя переменной, которую ты считаешь объектом класса))

Для моего примера кода: сделав print(type(obj1)), ты увидишь <class ‘__main__.Class1’>

mansur
вот ошибка которую выводит ваш код:
Traceback (most recent call last):
File “py.py”, line 4, in <module>
check_methode = class1.methode1(num = 5)
TypeError: methode1() missing 1 required positional argument: ‘self’
а я пришёл сюда с той же самой ошибкой!
Ocean
mansur
посмотри внимательно у меня в коде:
1) нет methode1
2) Class1 c заглавной
3) отсутствует переменная check_methode
4) в 4 строке, на которую указывает ошибка у меня… комментарий)
Проверь что именно запускаешь) Ты сейчас запускаешь свой старый код
mansur
мне нужно вывести значение переменной не из метода __init__ , а из другого метода
check_methode = class1.methode1(num = 5) <– экземпляр класса который сразу получает доступ к методу и записывает в переменную num значение 5

ошибка: methode1() missing 1 required positional argument: ‘self’ (если я правильно понимаю то записывать значение в self не нужно)
Ocean
mansur
нет, ты неверно понимаешь.
Я тебе выше привела пример, на основании которого ты мог разобраться и исправить свои ошибки

Чтобы работать с экземпляром класса его сначала нужно создать.
В твоей строке check_methode = class1.methode1(num = 5) не создается экземпляр класса. Когда ты это поймешь, то проблема исчезнет.

  
class Class1(object):
    def method1(self, num):
        return num
obj1 = Class1()
print(type(obj1))
print(obj1.method1(num = 5))

mansur
спасибо за помощь
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB