gpt4 book ai didi

python - 方法输出是否需要绑定(bind)到 "self"才能被其他方法使用?

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:17 24 4
gpt4 key购买 nike

我是 Python 面向对象编程的新手,我正在努力实现对 this question 的公认答案。在 Python 中(它最初是在 R 中)。

我有一个简单的问题 - 是否可以在不首先将输出绑定(bind)到 self 的情况下访问一种方法的输出以用于另一种方法?我认为答案是否定的——但我也想象有一些技术可以完成我没有想到的相同任务。

我的代码开始如下。在您使用 kappa 方法之前,它工作正常。我真的很想能够将 kappa 定义为 curvature 的简单扩展(因为它只是相同的绝对值)但我对添加不是特别感兴趣它是属性列表。我可能也想太多了,在 Python 中可以使用闭包之类的东西,或者添加到属性列表是 Pythonic 要做的事情吗?

import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline

class Road(object):
def __init__(self, x, y): #x, y are lists
# Raw data
self.x = x
self.y = y

# Calculate and set cubic spline functions
n = range(1, len(x)+1)
fx = InterpolatedUnivariateSpline(n, x, k=3)
fy = InterpolatedUnivariateSpline(n, y, k=3)
self.fx = fx
self.fy = fy

def curvature(self, t):
# Calculate and return the curvature
xp = self.fx.derivative(); yp = self.fy.derivative()
xpp = xp.derivative(); ypp = yp.derivative()
vel = np.sqrt(xp(t)**2 + yp(t)**2) #Velocity
curv = (xp(t)*ypp(t) - yp(t)*xpp(t)) / (vel**3) #Signed curvature

return curv

def kappa(self, t):
return abs(curv)

最佳答案

只需调用另一个方法:

class Road(object):

...

def kappa(self, t):
return abs(self.curvature(t=t))

关于python - 方法输出是否需要绑定(bind)到 "self"才能被其他方法使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854079/

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