Я не уверен, что это будет быстрее или даже точнее, но вы могли бы использовать алгоритм магического квадратного корня Джона Кармака , чтобы быстрее решить квадратный корень. Вероятно, вы могли бы легко проверить это для всех возможных 32-битных целых чисел и убедиться, что вы действительно получили правильные результаты, так как это всего лишь приближение. Тем не менее, теперь, когда я думаю об этом, использование двойных чисел также приближенно, поэтому я не уверен, каким образом это вступит в игру.
o = C2()
Это выполнит то, что вы хотите. Или, если вы хотели использовать classToUse, просто используйте:
o = classToUse()
Надеюсь, это поможет.
Ты почти там. Вместо вызова метода instantiate () просто вызовите переменную напрямую. Он назначается классу, и классы могут быть вызваны:
if (something):
classToUse = C1
else:
classToUse = C2
o = classToUse()
Все просто, Python не распознает, где переменная - это класс или функция. Он просто вызывает это значение.
class A:
pass
B=A
b=B()
Класс - это объект, как и все остальное, например, экземпляр, функция, строка ... класс - это тоже экземпляр. Таким образом, вы можете сохранить его в переменной (или где-нибудь еще, где вы можете хранить данные) и вызывать его с помощью () независимо от того, откуда он пришел.
def f(): print "foo"
class C: pass
x = f
x() # prints foo
x = C
instance = x() # instanciates C