Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2015 18:06:31

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

Отсутствие скобок после Class во втором случае не опечатка?

Офлайн

#2 Дек. 6, 2015 18:08:49

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

ayb
Тут то как раз экземпляр создан
Вы абсолютно правы. Но init вызыватся автоматически поэтому по вашему методу будет
class Ta:
   pass
a=Ta()
a.x1=1
a.x2=2
a.x3=a.x1+a.x2
b=Ta()
b.x1=1
b.x2=2
b.x3=b.x1+b.x2

а с инитом
class Ta:
   def __init__(self):
       self.x1=1
       self.x2=2
       self.x3=self.x1+self.x2
a=Ta()
b=Tb()
те код с init сокращает код при многократном создании объектов. Делает объекты единообразнее.



Офлайн

#3 Дек. 6, 2015 18:09:46

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

Определение свойств класса без метода __init__

Какое к черту связывание, что вы несете?
Экземпляр создается вот так

cls = Class()
при этом всегда вызывается метод __init__.
class Class:
     def __init__(self):
           self.a = time.time()
у каждого созданного экземпляра “а” будет уникальным.



Отредактировано FishHook (Дек. 6, 2015 18:10:30)

Офлайн

#4 Дек. 6, 2015 18:11:18

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

Определение свойств класса без метода __init__

Rudium
Отсутствие скобок после Class во втором случае не опечатка?
читайте учебник!



Офлайн

#5 Дек. 6, 2015 18:15:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

FishHook
Экземпляр создается вот так
самое смешное что он так и сделал. Только переопределил ключевое слово класс на всякий случай.
и не создал второй экземпляр. Поэтому нам непонятно как он собирается это делать.
Если будет так
class_instance = Class()
то мы его легко уличим что связь с классом а не с экземпляром.



Отредактировано doza_and (Дек. 6, 2015 18:17:59)

Офлайн

#6 Дек. 6, 2015 18:16:48

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

Первый день изучаю классы)) И поменьше ненависти и ругани, пожалуйста.

Офлайн

#7 Дек. 6, 2015 18:17:37

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

Rudium
Например:
class Class():
a = 5

class = Class()
print(class.a) #выведет 5
В Python 3 до вывода числа 5 вообще не дойдет, т.к. в качестве имени ссылки Вы используете ключевое слово.
>>> class Class:
...    a = 5
... 
>>> class = Class()
  File "<stdin>", line 1
    class = Class()
          ^
SyntaxError: invalid syntax
UPD: В Python 2.7 будет та же самая ошибка.

Отредактировано old_monty (Дек. 6, 2015 18:29:52)

Офлайн

#8 Дек. 6, 2015 18:19:10

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

Rudium
И поменьше ненависти и ругани, пожалуйста.
Постараемся, но вы сам начали.
Rudium
не надо ля ля
в питоне это нетак устроено как в javascript.
вы про prototipe слышали?



Отредактировано doza_and (Дек. 6, 2015 18:21:40)

Офлайн

#9 Дек. 6, 2015 18:25:02

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

Да. Я ошибся. Скобки не нужны в определении класса. Но странно что это не вызвало ошибку. Работает как со скобками, так и без.

Офлайн

#10 Дек. 6, 2015 18:27:14

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Определение свойств класса без метода __init__

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version