python - Python中的类方法没有看到定义的变量
问题描述
我第一次使用 Python 类,即使我在“ init ”中定义了一个变量,类方法仍然给我一个错误,说我没有定义它,感谢任何建议。
import numpy as np
import scipy.stats as si
import pandas as pd
from math import sqrt, exp, log, pi
class Option:
def __init__ (self, S, K, T, r, price, option):
self.S = S
self.K = K
self.T = T
self.r = r
self.price = price
self.option = option
self.sigma = self.bs_implied_vol()
@classmethod
def bs_price (self, sigma):
d1 = (np.log(S / K) + (r + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d2 = (np.log(S / K) + (r - 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
if option == 'call':
result = (S * si.norm.cdf(d1, 0.0, 1.0) - K * np.exp(-r * T) * si.norm.cdf(d2, 0.0, 1.0))
if option == 'put':
result = (K * np.exp(-r * T) * si.norm.cdf(-d2, 0.0, 1.0) - S * si.norm.cdf(-d1, 0.0, 1.0))
return result
@classmethod
def bs_implied_vol (self):
vol = 0.5
epsilon = 1.0
abstol = 1e-4
i = 0
max_iter = 1e3
while epsilon > abstol:
if i > max_iter:
break
i = i + 1
orig = vol
function_value = self.bs_price(vol) - price
vega = S * si.norm.pdf(d1) * sqrt(T)
vol = -function_value/vega + vol
epsilon = abs(function_value)
return vol
option = Option (99.4,99.5,0.2,0.001,0.09683,'call')
我得到的错误是:
NameError:名称“S”未定义
解决方案
推荐阅读
- python - 我应该如何解决发送 POST 请求时收到的错误请求响应?
- javascript - 如何画椭圆的一部分?(0-100%)
- networking - 如何在 Hyper-V 和默认开关上使用多个网站/开发 url
- php - Symfony 3. 4 无法识别的字段:emailCanonical
- cassandra - cqlsh 在输入 ':' 处没有可行的替代方案
- javascript - 如何比较两个字符串数组,不区分大小写且与排序无关 - JS,ES6
- twilio - Twilio 加入 Google Hangouts 电话会议
- powershell - 无法将参数“Path”绑定到参数,因为它是 NULL
- java - RSyntaxtextarea,给 JavaScriptParser 添加一个变量
- java - Android studio Firebase 数据库查询选定值