Size: a a a

2020 March 02

NP

Not Pashia in Python
Я бы сделал словарь вида
FnList{ '1' : имя функции, '2' : имя функции}

Потом бы инициализировал функции отдельно

Потом слелал инициадизатор вида "
def init(self, fnx):
 FnList[fnx]()
источник

ВК

Виталий Калюжняк in Python
Нашел способ через getattr
self.val = getattr(self, val)

self.val()
источник

ВК

Виталий Калюжняк in Python
работает, но не пока не понимаю почему
self, val
, а не
self.val
источник

ВК

Виталий Калюжняк in Python
Разобрался)
getattr(object, name[, default])

Возвращает значение атрибута object с указанным именем. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом является значение этого атрибута. Например, getattr(x, 'foobar') эквивалентна x.foobar. Если названный атрибут не существует, то возвращается то, что задано по умолчанию, если предусмотрено, в противном случае возбуждается AttributeError (docs.python.org/3/library/exceptions.html#AttributeError).
источник

SD

Sergey D in Python
Виталий Калюжняк
Разобрался)
getattr(object, name[, default])

Возвращает значение атрибута object с указанным именем. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом является значение этого атрибута. Например, getattr(x, 'foobar') эквивалентна x.foobar. Если названный атрибут не существует, то возвращается то, что задано по умолчанию, если предусмотрено, в противном случае возбуждается AttributeError (docs.python.org/3/library/exceptions.html#AttributeError).
Тогда уж стоит указать лямбду в качестве дефолта в гетаттр, чтобы код не падал при инициализации класса значением отличным от имени метода
источник

SD

Sergey D in Python
Ну или какой-то кастомный эксепшн выбрасывать, который отлавливать снаружи и что-то с ним делать
источник

NP

Not Pashia in Python
А мой вариант чем не понравился?)
источник

ВК

Виталий Калюжняк in Python
Not Pashia
А мой вариант чем не понравился?)
в нем кода больше))
источник

NP

Not Pashia in Python
Ох ну да)
источник
2020 March 03

RR

Roman Ro in Python
Помогите, не могу найти как динамически  создать объект класса? То есть создать экземпляр на лету по запросу.
источник

RR

Roman Ro in Python
Rand_string=Class()
источник

DD

Dima Dzundza in Python
Roman Ro
Помогите, не могу найти как динамически  создать объект класса? То есть создать экземпляр на лету по запросу.
Если у тебя есть экземпляр, то по-моему, __super__()
источник

SD

Sergey D in Python
Roman Ro
Помогите, не могу найти как динамически  создать объект класса? То есть создать экземпляр на лету по запросу.
иф что-то:
   объект = Класс1()
иф что-то другое:
   объект = Класс2()

Или ты про что?
источник

RR

Roman Ro in Python
Sergey D
иф что-то:
   объект = Класс1()
иф что-то другое:
   объект = Класс2()

Или ты про что?
Не совсем, мне интересно генерировать имя объекта (в пространство имён класа). К примеру у тебя есть клас Cats с котами я хочу при событиях создавать определенные  экземпляры этого класа, но если их будет тысяча тут if else не вариант... Мне посоветовали искать паттерн фабрика но там много всего и я пока не нашел ответа.
источник

SD

Sergey D in Python
Roman Ro
Не совсем, мне интересно генерировать имя объекта (в пространство имён класа). К примеру у тебя есть клас Cats с котами я хочу при событиях создавать определенные  экземпляры этого класа, но если их будет тысяча тут if else не вариант... Мне посоветовали искать паттерн фабрика но там много всего и я пока не нашел ответа.
Фабрика же это те же ифы/элсы только в оболочке из ООП, разве нет?
источник

SD

Sergey D in Python
Roman Ro
Не совсем, мне интересно генерировать имя объекта (в пространство имён класа). К примеру у тебя есть клас Cats с котами я хочу при событиях создавать определенные  экземпляры этого класа, но если их будет тысяча тут if else не вариант... Мне посоветовали искать паттерн фабрика но там много всего и я пока не нашел ответа.
Чего 1000? Классов? Или экземпляров?
Если классов, то ты явно делаешь что-то не то.
А если экземпляров, то пусти цикл.
источник

DD

Dima Dzundza in Python
Roman Ro
Не совсем, мне интересно генерировать имя объекта (в пространство имён класа). К примеру у тебя есть клас Cats с котами я хочу при событиях создавать определенные  экземпляры этого класа, но если их будет тысяча тут if else не вариант... Мне посоветовали искать паттерн фабрика но там много всего и я пока не нашел ответа.
Если хочешь пользоваться экземплярами, то используй словари. Если хочешь создавать классы на лету, тоже можно тоже использовать словари, посмотри про метаклассы
источник

SD

Sergey D in Python
Dima Dzundza
Если хочешь пользоваться экземплярами, то используй словари. Если хочешь создавать классы на лету, тоже можно тоже использовать словари, посмотри про метаклассы
Что значит "создавать классы"?
источник

SD

Sergey D in Python
Классы в питоне можно создать единственным образом: написав их (определив).
источник

DD

Dima Dzundza in Python
Sergey D
Классы в питоне можно создать единственным образом: написав их (определив).
Метаклассы? Не, не слышал.
источник