武汉江汉区Python培训多久能学会
Python课程内容
Python基础
Python概述环境搭建、入门程序数据类型、变量基本运算符if选择结构while循环列表、for循环元组、集合字典操作字符串操作日期模块(datetime)使用函数系统模块os操作模块sys数学模块math文件IO面向对象:概述、封装面向对象:继承、多态异常处理自定义模块及使用数据库
Linux概述Python环境搭建微信飞机大战ubuntu开发MySQL数据库概述MySQL安装MySQL单表增删改查外键约束多表查询Python操作MySQLmongoDB入门mongoDB进阶Redis概述Redis安装Redis常见命令
Python核心
Python内存分析列表*操作函数*操作正则表达式案例操作网络编程多进程-多线程
前端开发
HTML概述入门程序、文档结构常见行级标签常见块级标签样式概述常见文本修饰样式尺寸修饰样式定位样式盒子模型网页项目开发JavaScript概述基础语法事件操作DOM操作常见**开发Ajax操作JQuery概述插件使用、Ajax操作Bootstrap常见全局样式常见插件的使用
Django Web框架
Web基础Django入门数据模型Model视图操作Views\路由操作模板操作Template后台管理系统表单处理、数据安全常见问题:ajax、分页等项目协同开发项目部署、分布式处理项目开发Tornado入门Tornado请求处理流程静态文件及模板的操作Tornado数据库操作Tornado安全应用Tornado异步操作WebSocketNginx下载、配置新闻发布平台项目开发
数据爬虫
爬虫原理与数据爬取urllib2爬虫*操作数据提取requests模块BeautifulSoup4Scrapy框架概述深度爬虫Scrapy分布式爬虫入门Scpary-Redis分布式爬虫Scrapy-Redis实战案例
人工智能
数据结构与算法人工智能核心概念机器学习常见算法深度学习常见算法数据分析数据可视化
. author作者信息
__author__ = "Jack" def show(): print(__author__) show()
14. slots
Python作为一种动态语言,可以在类定义完成和实例化后,给类或者对象继续添加随意个数或者任意类型的变量或方法,这是动态语言的特性。例如:
def print_doc(self): print("haha") class Foo: pass obj1 = Foo() obj2 = Foo() # 动态添加实例变量 obj1.name = "jack" obj2.age = 18 # 动态的给类添加实例方法 Foo.show = print_doc obj1.show() obj2.show()
但是!如果我想限制实例可以添加的变量怎么办?可以使slots限制实例的变量,比如,只允许Foo的实例添加name和age属性。
def print_doc(self): print("haha") class Foo: __slots__ = ("name", "age") pass obj1 = Foo() obj2 = Foo() # 动态添加实例变量 obj1.name = "jack" obj2.age = 18 obj1.sex = "male" # 这一句会弹出错误 # 但是无法限制给类添加方法 Foo.show = print_doc obj1.show() obj2.show() 由于'sex'不在__slots__的列表中,所以不能绑定sex属性,试图绑定sex将得到AttributeError的错误。 Traceback (most recent call last): File "F:/Python/pycharm/201705/1.py", line 14, in <module> obj1.sex = "male" AttributeError: 'Foo' object has no attribute 'sex'
需要提醒的是,slots定义的属性仅对当前类的实例起作用,对继承了它的子类是不起作用的。想想也是这个道理,如果你继承一个父类,却莫名其妙发现有些变量无法定义,那不是大问题么?如果非要子类也被限制,除非在子类中也定义slots,这样,子类实例允许定义的属性就是自身的slots加上父类的slots。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 武汉江岸区Web培训武汉江汉区Python培训武汉硚口区Linux云计算培训 网站详细了解,免费咨询电话:400-998-6158