gpt4 book ai didi

python - 在 python 类之外创建带有类自变量的方法,然后将其作为方法添加到类中

转载 作者:行者123 更新时间:2023-12-02 02:05:41 25 4
gpt4 key购买 nike

我想在类外部创建一个与一些自类变量一起使用的方法,然后在实例化时将其添加到类中。

类似这样的事情:

used_method = int(input())

if used_method == 1:
def outside_method(var1=self.var1, var2=self.var2):
return (var1 + var2)
elif used_method == 2:
def outside_method(var1=self.var1, var2=self.var2, var3=self.varx):
return (var1 - var2) * var3

class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0

def _method1(self, x, y):
a = x + y
b = x * y
return a, b

def run(self)
self.var1, self.var2 = self._method1(self.varx, self.vary)
target = outside_method()
print(target)

所以,当:

used_method = 1
myobject = myClass()
myobject.run()

输出应该是 11,但是当:

used_method = 2
myobject = myClass()
myobject.run()

输出应为-3。

这是因为该类非常大,我希望允许用户自定义与在 run 方法的每次迭代中更改的自变量一起使用的 Outside_method。

有人可以帮我解决这个问题吗?

提前致谢。

最佳答案

示例1:

used_method = int(input())

if used_method == 1:
def outside_method(self):
return self.var1 + self.var2
elif used_method == 2:
def outside_method(self):
return (self.var1 - self.var2) * self.varx


class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0

def _method1(self, x, y):
a = x + y
b = x * y
return a, b

def run(self):
self.var1, self.var2 = self._method1(self.varx, self.vary)
target = outside_method(self)
print(target)

示例2:

used_method = int(input())

if used_method == 1:
def outside_method(var1, var2):
return var1 + var2
elif used_method == 2:
def outside_method(var1, var2, var3):
return (var1 - var2) * var3


class myClass():
def __init__(self, varx=3, vary=2):
self.varx = varx
self.vary = vary
self.var1 = 0
self.var2 = 0

def _method1(self, x, y):
a = x + y
b = x * y
return a, b

def run(self):
self.var1, self.var2 = self._method1(self.varx, self.vary)
args = [self.var1, self.var2]
target = outside_method(*((*args, self.varx) if used_method == 2 else args))
print(target)

关于python - 在 python 类之外创建带有类自变量的方法,然后将其作为方法添加到类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68493263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com