Я новый пользователь Python. Таким образом, это может быть очень глупо. Но как лучше всего запустить класс автоматически (в котором есть несколько функций) и вернуть результат для заданного значения. Например:
class MyClass():
def __init__(self,x):
self.x=x
def funct1(self):
return (self.x)**2
##or any other function
def funct2(self,y):
return y/100.0
##or any other function
def wrapper(self):
y=self.funct1()
z=self.funct2(y)
##or other combination of functions
return z
Прямо сейчас, чтобы запустить это, я использую:
run=MyClass(5)
run.wrapper()
Но я хочу запустить вот так:
MyClass(5)
Что вернет значение и может быть сохранено внутри переменной без необходимости использования функции-оболочки.
1. Вы можете вызвать wrapper внутри __init__ (но имейте в виду, что __init__ не может возвращать значение, поэтому вам все равно потребуется использовать атрибут для сохранения результата). 2. Я не уверен, что MyClass заслуживает / должен быть классным.






Итак, когда вы пишете MyClass(5), вы инсталлируете новый экземпляр класса что: MyClass, и поэтому короткий ответ - нет, вам нужна оболочка, потому что при создании экземпляра класса он обязательно вернет объект, а не определенное значение.
Если вы хотите просто вернуть значение, основанное на вводе (например, 5), рассмотрите возможность использования вместо этого function.
Функция будет такой:
def my_func(x):
y = x**2
z = y/100.0
return z
Существует множество причин использовать классы, см. Этот ответ https://stackoverflow.com/a/33072722/4443226, но если вас интересует только вывод операции / уравнения / функции, я бы остановился на функциях.
__init__ метод должен вернуть None.
ссылка на документацию
no non-None value may be returned by init()
Вы можете создать функтор, как показано ниже:
class MyClass(object):
def __init__(self,x):
self.x=x
def funct1(self):
return (self.x)**2
##or any other function
def funct2(self,y):
return y/100.0
##or any other function
def __call__(self):
y=self.funct1()
z=self.funct2(y)
##or other combination of functions
return z
Вызов этого функтора будет выглядеть следующим образом:
MyClass(5)() # Second () will call the method __call__. and first one will call constructor
Надеюсь, что это поможет вам.
Не используйте класс, если вы не хотите сохранять его экземпляр, похоже, что это функция, которую вы хотите