crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в python, аргументы класса
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
poluna Дата 21.12.2015, 16:51
  Ну, как-то так исторически сложилось! :)
lanz Дата 21.12.2015, 16:36
 
Цитата
и наслаждаться! :)

А кто мешает наслаждаться используя dict? :lol:
for k in d:
  print d[k]

Просто непонятно почему именно аттрибуты класса а не ключи в словаре.
poluna Дата 21.12.2015, 16:16
  Блин, вот дура! Туплю на такой ерунде! :D
Нет, не лучше, у меня есть много классов вид, и классов пакет, я не знаю в какой момент и что придет, а в них в свою очереь полно полей aka аргументы - атрибуты класса. И по природной лени не хочется описывать и связывать эти много всего друг с другом, да и если добавится дополнительный аргумент, то придется все места где он используется проверять. А тут нужно добавить поля в вид и пакет и наслаждаться! :)
lanz Дата 21.12.2015, 15:44
  Интерпретатор говорит что объект типа "тип" нельзя использовать как dict (и он прав, нет метода __getitem__ :lol: )
Либо используйте __dict__, либо getattr
  for k in SimplePacket().__dict__.iterkeys():
    print k
    print SimpleView.__dict__[k]
    print getattr( SimpleView, k )

Вообще я не гуру питона, но не лучше ли использовать списки, кортежи или те же самые словари?
poluna Дата 21.12.2015, 15:24
  На да, путаюсь с формулировками, мне нужно такое приведение:
for k in SimplePacket().__dict__.iterkeys():
    print SimpleView[k[1;]]
Но в данном коде выдается ошибка:
Цитата
TypeError: 'type' object has no attribute '__getitem__'
:(

Это мне нужно, чтобы не писать кучу строк вроде:
model.setData(model.index(self._modelIndex.row(), SimpleView.id), sp._id) # sp = SimplePacket()
lanz Дата 21.12.2015, 15:04
  Аргументы, вы имеете ввиду аттрибуты?
Раскрывающийся текст
Вообще гугл выдает только http://rtfm.co.ua/python-klassy-kratkij-ob...import-klassov/
при поиске по словам "аргументы классов". Но такое использование вообще первый раз вижу, если не затруднит скинте ссылку на определение аттрибутов как аргументов?

Cопоставить что значит? Приравнять(assign)?
poluna Дата 21.12.2015, 14:37
  Есть классы:
class SimpleView(object):
    id=0
    status=1
    name=2
    ip=3
    end=4

class SimplePacket(object):
   def __init__(self):
        self._id=None
        self._status=None
        self._name=None
        self._ip=None
Я могу перечислить все аргументы класса SimplePacket:
for k in SimplePacket().__dict__.iterkeys():
    print k
Вопрос, как сопоставить аргумент объекта SimplePacket с аргументом класса SimpleView?
Даже если допустить, что у них имена одинаковые, без нижних подчеркиваний?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 22:23