day 07

面向对象

 python可以实现面向对象的编程。个人对面向对象思想的理解是这样的:计算机发展的还不是那么快的时代,需求相对来说

没有那么复杂,根据需求实现功能即可满足;后期由于互联网的发展,需求越来越复杂,单一地根据过程去开发很容易让人搞

糊涂,所以研究出一套取自于现实中正常思维的开发模式,使代码看起来逻辑清晰。

1 面向对象主要还是由 类 来实现:

class className(object):  # 括号中为要继承谁,所有最初定义的类都应从object中继承
    pass
 2 定义类的属性:

  使用 __init__ (左右都是俩下划线)函数,可以接受实例化时输入的参数,作为实例的属性。

class dog(object):
    def __init__(self,name):                
        self.name = name
 __init__ 中首个参数为 self ,类似 js 里的 this ,谁调用这个函数,self就指向谁,name接受实例化时的参数,

self.name 绑定name属性,类和实例,方法跟属性都可以用点 . 来绑定。

class dog(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
gou = dog("狗子",2) # 类的实例化
gou.name >> "狗子"
gou.age >> 2

 3 类的方法

所谓类的方法,就是在类里头定义一个函数,函数的首个参数也需要为self

class dog(object):
    def wang(self):
        print("汪!")
gou = dog()
gou.wang() 》》 "汪!"
# 注意,调用方法时,要加括号。要么就是返回方法的内存地址

 4 三个特性

 面对对象的三个特性为: 封装,继承,多态。

封装: 应该注意到了,类的定义格式很像函数,将一大堆代码写在类的肚子里,如果有多个对象很多特征相似,可以

  把这些特征封装进一个类中。

继承: 类有继承的功能,所谓继承就是从一个类里头实例化一个对象,你没写这个对象的属性方法,这个对象从他的类中

 得到了所有的属性方法,可以直接调用。

class dog(object):
    def __init__(self)
        self.leg = 4
    def attack_method(self):
        print("the dog is bitting!")

gou = dog() # 实例对象gou 从类 dog 中继承了所有的属性和方法
gou.leg >> 4
gou.attack_method()  >> the dog is bitting!

类也能继承,一个类定义的时候,括号中有个object参数,表示从 python 自带的object类中继承相应的属性以及方法。

 同样的,也能从其他类中继承属性和方法

class animal(object):
    def __init__(self):
        self.look = "cute"
class dog(animal):
    def looklike(self):
        print(self.look)  
        # 调用了未定义的 look 属性

gou = dog()
gou.looklike() >> cute
gou.look >> cute  # dog中未定义的属性
 多重继承,有时候一个对象不仅有这个类的特性,还有那个类的特性,此时可以可以定义一个类,继承多个类。

class animal(object):
    def __init__(self,color):
        self.color = color
class dog(object):
    def __init__(self,name):
        self.name = name
    def wang(self):
        print("汪!")
class village_dog(animal, dog):
    pass # 从animal和dog中继承

gou = village_dog("黄色")
gou.color >> "黄色"
gou.wang() >> "汪!"
# 要注意的是,animal和dog中都有 init 函数,init函数只会执行一个,就近选择,如果自身有用自己的,自己没,用参数里靠前的那个类的
 多态:
  多态这个特性是理所当然的,A类继承自B类,B类有继承自C类,C类甚至继承自D和E类。则从A类实例化后的对象,

判断类型时,可以是 A,B,C,D,E 类,针对这些类定义的函数他都能用,这就是多态。

class animal(object):
    def __init__(self,color):
        self.color = color
class dog(object):
    def __init__(self,name):
        self.name = name
    def wang(self):
        print("汪!")
class village_dog(animal, dog):
    pass # 从animal和dog中继承

gou = village_dog("sdfa")
isinstance(gou,dog) >> True
isinstance(gou,animal) >> True
# isinstan 判断是否为XX类型  如果用type 则只显示 village 类
 5 类的一些操作方法

 dir(obj) 显示类的所有属性和方法
修改/添加属性,方法 : 直接点 . obj.haha = "哈哈" obj.asdf = lambda x: return x+1


 

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值