# python study day6
# 类属性
# class Student(object):
# name = 'Student'
# s = Student()
# print(s.name) #>>> Student
# print(Student.name) #>>> Student
# s.name = 'newName'
# print(s.name) #>>> newName
# del s.name
# print(s.name) #>>> Student
# 计算实例数量
# class Student(object):
# count = 0
# def __init__(self, name):
# self.name = name
# Student.count +=1
# 实例动态绑定属性
# s = Student()
# s.name = 'newName'
# 实例动态绑定方法
# def set_age(self, age):
# self.age = age
# from types import MethodType
# s.set_age = MEthodType(set_age, s)
# 给类class动态方法
# Student.set_age = set_age
# 使用__slots__限制动态绑定属性
# class Student(Object):
# __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
# s.socre = 99 # slots没有score >>> AttributeError
# 子类未定义slots时不受父类影响,定义后限制是子类+父类
# 内置 @property 可以把一个方法变成属性调用
# class Student(object):
# @property
# def score(self):
# return self.score
# @score.setter
# def sore(self, value):
# if not isinstance(value, int):
# raise ValueError('score must be an Integer!')
# if value < 0 or value > 100:
# raise ValueError('score must betweeen 0~100!')
# s = Student()
# s.score = 60 # 实际转化为s.set_score(60)
# print(s.score) # 实际转化为s.get_score()
# 也可以不添加 @score.setter 注解,该属性就是只读属性
# class Screen(object):
# @property
# def width(self):
# return self._width
# @width.setter
# def width(self, width):
# self._width = width
# @property
# def height(self):
# return self._height
# @height.setter
# def height(self, height):
# self._height = height
# @property
# def resolution(self):
# return self._width*self._height
# s = Screen()
# s.width = 1024
# s.height = 768
# print('resolution =', s.resolution)
# Python 允许多重继承,类似java接口实现
# class Dog(Animal, Runnable):
# pass
# 为看出继承关系可以引入MixIn
# class MyTCPServer(TCPServer, ForkingMixIn):
# pass # 多进程模式TCP服务
# class MyUDPServer(UDPServer, ThreadingMixIn):
# pass # 多线程模式UDP服务
# 定制类
# class Student(object):
# pass
# print(Student()) # 调用__str__()方法,打印实例地址
# >Student() # 调用__repr__()方法,打印实例地址
# class Student(object): # 改写打印内容
# def __init__(self, name):
# self.name = name
# def __str__(self):
# return 'Student object(name=%s)' % self.name
# __repr__ == __str__
# __iter__() 方法 list、tuple 类型的 for…in 循环实现
# __next__() 方法拿到循环下一个值
# __getitem__() 方法实现list下标获取值,切片,step步长参数,key等
# __setitem__() 方法对list、dict等集合赋值
# __delitem__() 方法用于删除元素
# __getattr__() 方法,在对象调用查找不到属性时调用。如:链式调用
# class Chain(object):
# def __init__(self, path=''):
# self._path = path
# def __getattr__(self, path):
# return Chain('%s/%s' % (self._path, path))
# def __str__(self):
# return self._path
# __repr__ = __str__
# print(Chain().status.user.itemline.list) #>>>/status/user/itemline/list
# __call__() 方法,定义后可以直接对实例进行调用,执行该方法
# class Student(object):
# def __init__(self, name):
# self._name = name
# def __call__(self):
# print('My name is %s.' % self._name)
# s = Student('Straw')
# s() #>>> My name is Straw.
# # 可以通过callable()函数判断类实例是否能被调用
# callable(max) #>>> True
# callable('str') #>>> False
# 枚举类,python提供了Enum类
# from enum import Enum
# Month = Enum('Month', ('Jan','Feb','Mar','Apr','May',
# 'Jun','Jul','Aug','Sep','Oct','Nov','Dec'))
# 从Enum派生出自定义类
# from enum import Enum, unique
# @unique # 可以自动检查是否有重复值
# class Weekday(Enum):
# Sun = 0
# Mon = 1
# Tue = 2
# Wed = 3
# Thu = 4
# Fri = 5
# Sat = 6
# print(Weekday.Mon) #>>> Weekday.Mon
# print(Weekday['Tue']) #>>> weekday.Tue
# print(Weekday.Tue.value) #>>> 2
# print(Weekday(1)) #>>> Weekday.Mon
# for name, per in Weekday.__members__.items():
# print(name, '==>', per)
# from enum import Enum
# class Gender(Enum):
# Male = 0
# Female = 1
# gender = Gender.Male
# print(isinstance(gender, Gender))
# class Student(object):
# def __init__(self, name, gender):
# self.name = name
# if isinstance(gender, Gender):
# self.gender = gender
# else:
# raise ValueError('gender value must be Gender Enum!')
# bart = Student('Bart', 0)
# type() 函数既可以返回一个对象的类型,也可以动态创建一个类
# def fn(self, name='world'): # 先定义函数
# print('Hello, %s' % name)
# Hello = type('Hello', (object,), dict(hello=fn))
# # 创建Hello class。完成三个参数,1.类名 2.继承的父类集合 3.class方法名函数绑定
# h = Hello()
# h.hello() #>>> Hello, world.
# print(type(Hello)) #>>> <class 'type'>
# print(type(h)) #>>> <class '__main__.Hello'>
# 元类 metaclass。一般实例构造过程:先定义metaclass、创建类、最后创建实例
# metaclass 允许创建类或者修改类,或者可以将类看成由metaclassc创建出来的“实例”
相关推荐
保姆级教程:用STM32标准库搞定TIM1的PWM输出(附完整代码和避坑点)
本文提供STM32F103高级定时器TIM1的PWM输出保姆级教程,涵盖从工程搭建到完整代码实现的详细步骤。重点解析TIM1作为高级定时器的特殊配置要点,包括时钟初始化、PWM通道设置和GPIO复用功能,并附常见问题排查指南和动态调整占空比的实用技巧,帮助开发者高效实现精准PWM控制。
面向对象高级编程 __slots__
1 class Student(object): 2 __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称 转载于:https://www.cnblogs.com/hutzerg/p/6800966.html
以ATT&CK为例构建网络安全知识图
随着攻击工具、方法的逐渐升级和复杂化,安全数据的大规模融合,攻防对抗愈加激烈。安全团队如何在浩瀚数据中有效发现高级威胁的蛛丝马迹,如何把网络安全专家的经验、知识有效转化为可复制可扩展的数据分析能力,如何将对抗高级威胁的“炼金术”逐步升级为科学淘金指南,如何将安全从业者从繁重的体力劳动中解放出来,愈发成为安全能力亟需突破的难点和重点,也是我们正在探索的方向。正如医疗行业中治疗疑难杂症依赖医疗专家,网络空间高级威胁的防护和处置也依赖安全专家的经验与知识。
ValueError: arrays must all be same length原因及解决方法
Python报错ValueError: arrays must all be same length
VS Code配置Java开发环境避坑指南:从JDK到Spring Boot插件全流程
本文详细介绍了在VS Code中配置Java开发环境的完整流程,涵盖JDK选择、环境变量配置、核心插件安装、构建工具优化及Spring Boot项目专项设置。特别针对常见问题提供避坑方案,帮助开发者快速搭建高效稳定的开发环境,提升Java和Spring Boot开发效率。
AutoSAR系列讲解 - 总目录
博主想在开始前先讲一下我们的具体安排,这里就以目录加说明的形式展示出来,同时这也可以作为大家学习AutoSAR的参考。由于实践篇需要在很久以后才会更新,所以这里我们先罗列一下理论篇的内容,实践篇等开始更新的时候我再补充上
已解决ValueError: All arrays must be of the same length异常的正确解决方法,亲测有效!!!
已解决ValueError: All arrays must be of the same length异常的正确解决方法,亲测有效!!!
深度剖析OpenHarmony AI Engine:开发板端侧大模型推理插件机制全链路拆解
/ 加载动态库// 获取符号地址// 关闭动态库// 获取错误信息public:// 单例获取// 销毁实例// 加载插件// 卸载插件private:// 获取插件实例// 插件映射锁// 插件映射表public:Plugin();~Plugin();// 加载算法// 卸载算法// 获取算法实例// 设置算法实例private:// 算法接口指针// 动态库句柄// 算法ID// 版本信息// 配置信息字符串int len;
解决ValueError: arrays must all be same length问题
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...
YOLO26轻量化科研实践:PartialConv驱动CSPCPC模块,让模型参数量直降1000W且精度不减
在目录下,新建AddModules文件夹,将cspcpc.py放入其中。
基于Simulink实现电动汽车电机驱动系统的建模与仿真
通过上述步骤,我们成功实现了基于Simulink的电动汽车电机驱动系统的建模与仿真。该系统能够全面评估电机驱动系统的性能,验证控制策略的有效性,并通过优化设计提高车辆的动力性和效率。引入智能预测:结合人工智能技术,实现更智能的控制策略。扩展功能:增加对多种电机类型的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。
RangeError: Invalid array length 问题解决
今天写项目的时候,报错出了这样的错误 RangeError: Invalid array length 在网络上找了一些资料发现,是v-for语句出现了问题。然后在检查时发现是提供的数据不为整数所导致的。 <div v-for="itemx in (hostProduct.length/4)" :key="itemx"> 因为hostProduct.length/4不...
FPGA实现串口升级及MultiBoot(十)串口升级SPI FLASH实现
采用软核进行串口升级的原因主要有以下几点:1、官方推荐:官方以前也推出了针对逻辑进行升级的程序《XAPP1081_QuickBoot》,但是从今年起(2024年)官方就停止更新相关例程了(详见下面截图),所以采用官方推荐的软核更新;2、简单并具有通用性:针对SPI或者BPI官方都有相关的IP,可应对市场上80%以上的FLASH,并且官方IP通用性极强,只需要修改几个参数就可以对不同厂家的芯片进行升级操作;
Python廖雪峰教程学习笔记:Day6
前言 养成一个好的习惯只需要坚持21天,Day6 函数式编程 高阶函数 返回函数 匿名函数 装饰器 偏函数 高阶函数 变量可以指向函数,如 x = abs(-10) 函数本身可以赋值给变量,如f = abs f(-10) 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。例如: def add(x,y,f): return f(x...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
廖雪峰Python学习笔记day15
学习笔记day14 # python study day15 # 一般不同平台邮件收发过程 # 发件人 -> MUA(Mail User Agent——邮件用户代理) -> # MTA(Mail Transfer Agent——邮件传输代理) -> 若干个MTA -> # MDA(Mail Delivery Agent——邮件投递代理) <- MUA <- 收件人 # SMTP 邮件发送协议,python提供 email(负责构造邮件)、smtplib(负责发送邮件)模
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
廖雪峰Python学习笔记day11
学习笔记day10 # python study day11 # collections 内建集合模块 # namedtuple 创建自定义tuple对象,规定tuple元素个数,使用属性引用元素 # from collections import namedtuple # Point = namedtuple('Point', ['x', 'y']) # p = Point(1, 3) # p2 = Point(-1, -3) # print(p.x, p.y) #>>> 1 3 #
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
廖雪峰Python学习笔记day9
学习笔记day8 # python study day9 # 进程和线程。实现多任务的方式 # 1、多进程模式 # 2、多线程模式 # 3、多进程+多线程模式 # multiprocessing 跨平台多进程模块。Unix/Linux/Mac环境下可以使用fork创建子进程 # from multiprocessing import Process # import os # def run_proc(name): # 子程序要执行的代码 # print('Parent process %s (
廖雪峰Python学习笔记day10
学习笔记day9 # python study day10 # 正则表达式 # \d # 匹配一个数字 # \w # 匹配一个字母或数字 # . # 匹配任意字符 # * # 匹配0个或任意多个字符 # + # 匹配至少一个字符 # ? # 匹配0个或1个字符 # {n} # 匹配n个字符 # {n, m} # 匹配n-m个字符 # \s # 匹配一个空格(包括Tab空白符),\s+ 表示至少一个空格 # [] # 匹配范围,[0-9a-zA-Z\_] 可以匹配一个数字、字母或下划线 # A|B # 匹配
廖雪峰Python学习笔记day1
学习参考自 廖雪峰Python教程 # 廖雪峰学习python 3.x # vscode 快捷当行注释 CTRL + / 或者 CTRL + K + C # vscode 快捷取消注释 CTRL + / 或者 CTRL + K + U # vscode 快捷下方插入行 CTRL + Enter # 交互模式下('>>>')输入一行代码,执行一行 # 33 + 2 # >>> 35 # 命令行模式下,直接运行.py文件,一次性执行所有代码 # print(33.1*3)
Python廖雪峰教程学习笔记:Day2
前言 养成一个好的习惯只需要坚持21天,Day2 使用list和tuple list 列表 list是一种有序的集合,可以随时添加和删除其中的元素。它的表示用[]。list = [] 变量name就是一个list。用len()函数可以得到list的长度,即该list当中有多少个元素。 list中元素的访问采用索引,⚠️注意索引是从0开始的,当索引超出list的长度,Python会报一个Inde...
廖雪峰 Python教程 学习笔记_Day01
廖雪峰 Python教程 学习笔记_Day02
Python廖雪峰教程学习笔记:Day5
前言 养成一个好的习惯只需要坚持21天,Day5 高级特性 切片 迭代 列表生成器 生成器 切片 取一个list和tuple的部分元素可以用切片快速实现。 L为一个list,L[0:3]表示从索引0开始取到索引3为止,但不包括索引3,即索引0,1,2三个元素。 如果第一个索引是0,还可以省略为L[:3],运行结果和L[0:3]一样。 如果索引从1开始,取出两个元素则可以写作L[1:3],运行...
Python廖雪峰教程学习笔记:Day4
前言 养成一个好的习惯只需要坚持21天,Day4 函数 编程中,函数的调用、定义在一定程度上可以简化功能的实现,降低程序的复杂度。 调用函数 Python中内置了许多有用的函数,我们在调用一个内置函数的时候,需要知道函数的名称和参数。 内置函数-Python 3.7.6文档 调用abs()函数: 调用函数的数量,如果传入的参数数量不对,会报TypeError错误: 如果传入参数的数量是对的,但...
Python廖雪峰教程学习笔记:Day11
前言 养成一个好的习惯只需要坚持21天,Day11 这两天主要学习一下面向对象的高级编程。 使用__slots__ 由之前学习类的定义和实例的创建,我们可以给实例绑定不同的属性,例如: class Student(object): pass s = Student() s.name = 'Tom' # 动态给实例绑定一个属性 print(s.name) # Tom 如果我们只允许对Studen...
Python廖雪峰教程学习笔记:Day7
前言 养成一个好的习惯只需要坚持21天,Day7 隔了几天没有写博客记录自己的学习。果然养成一个好的习惯不容易,丢掉一个好的习惯确是轻而易举,我不知道自己能坚持这个习惯多久,但是我会把每天写一篇学习博客的事情放在心上。自己写的博客可能不能帮助别人学到什么,但是这种总结归纳从一定程度上促进了自己的进步,加油! 匿名函数 有时候,为了减少代码,我们可以直接传入匿名函数,不需要显式的定义函数。在Pyth...

433



被折叠的 条评论
为什么被折叠?



