Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2021 10:57:33

mansur
Зарегистрирован: 2021-07-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

питон требует значение для self

    
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’

Отредактировано mansur (Июль 16, 2021 12:37:18)

Офлайн

#2 Июль 16, 2021 12:19:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

питон требует значение для self

mansur
Сначала надо создать объект класса.



Офлайн

#3 Июль 16, 2021 12:34:58

mansur
Зарегистрирован: 2021-07-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

питон требует значение для self

FishHook
mansurСначала надо создать объект класса.
check_methode = class1.methode1(num = 5) <—-объект класса есть

Офлайн

#4 Июль 16, 2021 12:39:03

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

питон требует значение для self

Ты вызываешь метод, которому требуется экземпляр класса, но сам экземпляр еще не создал

  
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 (Июль 16, 2021 12:53:04)

Офлайн

#5 Июль 16, 2021 12:43:04

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

питон требует значение для self

mansur
num - это динамический атрибут.
class1.methode1 - вызов метода.
Объект класса не создан. Какой свой код ты считаешь созданием объекта класса?

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

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

Отредактировано Ocean (Июль 16, 2021 12:49:16)

Офлайн

#6 Июль 16, 2021 12:58:16

mansur
Зарегистрирован: 2021-07-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

питон требует значение для self

вот ошибка которую выводит ваш код:
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’
а я пришёл сюда с той же самой ошибкой!

Отредактировано mansur (Июль 16, 2021 12:59:40)

Офлайн

#7 Июль 16, 2021 13:31:43

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

питон требует значение для self

mansur
посмотри внимательно у меня в коде:
1) нет methode1
2) Class1 c заглавной
3) отсутствует переменная check_methode
4) в 4 строке, на которую указывает ошибка у меня… комментарий)
Проверь что именно запускаешь) Ты сейчас запускаешь свой старый код

Отредактировано Ocean (Июль 16, 2021 13:34:32)

Офлайн

#8 Июль 16, 2021 13:49:21

mansur
Зарегистрирован: 2021-07-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

питон требует значение для self

мне нужно вывести значение переменной не из метода __init__ , а из другого метода
check_methode = class1.methode1(num = 5) <– экземпляр класса который сразу получает доступ к методу и записывает в переменную num значение 5

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

Отредактировано mansur (Июль 16, 2021 13:50:38)

Офлайн

#9 Июль 16, 2021 14:04:40

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

питон требует значение для self

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))

Офлайн

#10 Июль 16, 2021 14:08:59

mansur
Зарегистрирован: 2021-07-06
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

питон требует значение для self

спасибо за помощь

Отредактировано mansur (Июль 16, 2021 17:24:03)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version