Python 100 --- Day 8

面向对象编程

简单的来说,类就是蓝图和模板,对象就是类的实例,换言之,类是抽象,对象是具体的。在面向对象的编程世界中,一切都可以是对象(万物可对象),对象有自己的行为和属性,每个对象都是独特的,而且对象一定属于某个类。
    当把一堆拥有共同特征的对象的静态特征(属性)和动态特征(行为) 抽取出来做成一个类

定义类

    关键字:class
    其中用函数来模拟对象的动态特征

创建和使用对象

    例子,student = Student('Ana', 16)

访问可见性问题

    在python中访问权限,只有两种方式

  •     公开的
  •     私有的

    希望是私有的,在前面加上双下划线__
    注意:python中并没有从语法严格保证私有的私密性,只有更换个名字还是可以访问到他们,因为我们认为开放总是比封闭要好。
    实际的开发中不建议把属性设置为私有(可能导致子类无法访问),因此,加上单下划线_表示该属性受到保护,别的类要是访问就要注意,但这种只是一种暗喻,并不是强制。

面对对象的支柱

    三大支柱:封装,多态,继承

练习

  1. 定义一个类描述数字时钟
  2. 定义一个类计算两个已知点的距离
  3. 定义一个类描述平面上的点并提供移动点和计算到另一个点距离的方法

1.

#数字时钟的类
import time

class Clock():
    def __init__(self, hour=0, minute=0, second=0):
        self.hour = hour
        self.minute = minute
        self.second = second

    def run(self):
        self.second += 1
        if self.second > 59:
            self.minute += 1
            self.second %= 60
        if self.minute > 59:
            self.hour += 1
            self.minute %= 60
        if self.hour > 23:
            self.hour %= 24
        

    def show(self):
        return '%02d:%02d:%02d' % (self.hour,self.minute,self.second)


def main():
    clock1 = Clock(23,59,59)
    while True:
        print(clock1.show())
        time.sleep(1)
        clock1.run()
    

if __name__ == '__main__':
    main()

2.

#已知两点计算距离
import math

class Point():
    def __init__(self,x1,y1,x2,y2, distance):
        self.x_1 = x1
        self.x_2 = x2
        self.y_1 = y1
        self.y_2 = y2
        self.distance = distance

    def long(self):
        self.distance = math.sqrt((self.x_2 - self.x_1)**2 + 
                            (self.y_2 - self.y_1)**2)
        return self.distance

    def show(self):
    
        print('(%d,%d) 和 (%d,%d)距离是%d' % (self.x_1,self.y_2,self.x_2,self.y_2, self.distance))



def main():
    points = Point(0,0,3,4,0)
    points.long()
    points.show()

if __name__ == '__main__':
    main()

3.

#定义一个类描述平面上的点并提供移动点和计算到另一个点距离的方法
from math import sqrt

class Point(object):
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def move_to(self, x, y):
        self.x = x
        self.y = y

    def move_by(self, dx, dy):
        self.x += dx
        self.y += dy

    def distance_to(self, other):
        dx = self.x - other.x
        dy = self.y - other.y
        return sqrt(dx**2 + dy**2)

    def __str__(self):
        return '(%s,%s)' % (str(self.x), str(self.y))

def main():
    p1 = Point(3,5)
    p2 = Point()
    print(p1)
    print(p2)
    p2.move_by(-1,2)
    print(p2)
    print(p1.distance_to(p2))

if __name__ == '__main__':
    main()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用atrader库来进行PB-ROE选股。首先,需要导入必要的库,如numpy、pandas和atrader。然后,可以设置一些必要的配置,如关闭控制台系统警告。接下来,使用atrader库中的get_code_list函数来获取沪深300的成分股代码。 接着,可以使用atrader库中的get_factor_by_day函数来获取股票的PB和ROE数据。需要传入factor_list参数指定要获取的因子,这里是['PB', 'ROE'];target_list参数指定要获取数据的股票代码列表,这里是沪深300的成分股代码;date参数指定获取数据的日期,这里是'2019-08-30'。获取的数据可以用DataFrame进行存储和处理。 PB-ROE提供了一种投资的框架,即股票的PB和ROE之间存在近似的线性关系。根据这个框架,可以选择位于回归线下方的股票作为投资对象,因为它们的PB被低估,未来有上升修复的空间。而位于回归线上方的股票则被认为是PB被高估,未来可能下降。因此,通过使用PB-ROE选股策略,可以选择具有较好投资潜力的股票。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python线性回归 多因子模型选股思路](https://blog.csdn.net/qq_18668137/article/details/105144670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值