Basic OOP in Python

Short rate class

import numpy as np
import matplotlib.pyplot as plt

class short_rate(object):
    def __init__(self, name_, rate_):
        self.name = name_
        self.rate = rate_
        
    def get_df(self, time_list):
        time_list = np.array(time_list)
        return np.exp(-self.rate*time_list)
        
r = short_rate('federal fund rate', 0.15)

cfs = np.array([-100, 50, 75])
time_list = [0.0, 0.5, 1.0]
dfs = r.get_df(time_list)
pv = cfs*dfs
print pv.sum()

Cash flow class

class cash_flow_series(object):
    def __init__(self, name, time_list, cash_flow_list, interest_rate):
        self.cfname = name
        self.times = np.array(time_list)
        self.cashes = np.array(cash_flow_list)
        self.r = interest_rate
        
    def pv(self):
        dfs = self.r.get_df(self.times)
        return dfs*self.cashes
        
    def net_pv(self):
        return self.pv().sum()
Further generalization

class cfs_sensitivity(cash_flow_series):
    def __init__(self, name, time_list, cash_flow_list, interest_rate):
        self.cfname = name
        self.times = np.array(time_list)
        self.cashes = np.array(cash_flow_list)
        self.r = interest_rate
                    
    def npv_sensitivity(self, rate_list):
        npvs = []
        for rate in rate_list:
            self.r = short_rate('hypothetical risk free rate', rate)
            npvs.append(self.net_pv())
        return npvs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBA(Visual Basic for Applications)和 Python 都支持面向对象编程(OOP),但在语法和特性上存在一些区别,下面是一些常见的区别: 1. 语法:VBA 使用类模块(Class Module)来定义类,而 Python 使用关键字 class 来定义类。VBA 使用 Property Let/Get 来定义属性,而 Python 使用装饰器(@property)来定义属性。VBA 使用 Sub 和 Function 来定义方法,而 Python 使用 def 关键字来定义方法。 2. 继承:在 VBA 中,类可以通过继承一个或多个接口来实现继承,但没有直接的类继承机制。而在 Python 中,可以使用关键字 class 后面跟着一个或多个父类来实现类的继承。 3. 多态:Python 支持动态类型和多态性,即同一个方法可以根据不同对象的类型执行不同的操作。而 VBA 是一种静态类型语言,不支持动态类型和多态性。 4. 封装:Python 中的类成员(属性和方法)默认是公有的,可以通过命名约定来实现私有成员。而在 VBA 中,只有公有成员,无法直接实现私有成员。 5. 异常处理:Python 提供了丰富的异常处理机制,可以通过 try-except-finally 块来捕获和处理异常。而在 VBA 中,异常处理相对较简单,主要使用 On Error 语句进行错误处理。 6. 类型检查:Python 是动态类型语言,不需要显式声明变量类型。而 VBA 是静态类型语言,需要在变量声明时指定类型。 这些是 VBA 和 Python 面向对象编程的一些常见区别。了解这些区别可以帮助你更好地在两种语言中进行面向对象编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值