面向对象编程(python)和部分面向对象高级编程
1.类和对象
在python中定义类
class 类名(首字母最好大写)Student (Object(父类)):
def __init__(self):
self.属性 1= 参数1
self.属性2 = 参数2
变量 = Student(类名)
s.属性1 = ‘字符串’
__init__是一个特殊的函数用来初始化对象
self执行当前类的实例化对象
2.访问限制
1)如果不想类中的参数不受限制地赋值,可以在属性的前面添加__(两个双划线)来声明属性为private类型,不允许外部访问
2)如果希望访问呢,那么就通过get方法和set方法来访问
例如:def get_name(self):
return self.__name
def set_name(self,name):
self.__name = name
3.继承和多态
继承就是继承父类的所有特点,而且可以根据自己的情况,修改父类的方法
多态就是可以定义一个参数为父类类型的方法,最后传入,子类对象参数,返回适合子类的方法
4.动态语言就是不需要继承那样,只需要有相同的方法就可以像鸭子一样的走路的那种的“鸭子类型”
5.获取对象信息
1)判断对象信息可以通过type方法,以及函数的判断类型导入import types 语句来通过types判断函数的类型
2)可以通过isinstance()函数来判断对象的类型,将父类以及子类“一网打尽”,还可以通过dir()来判断属性的所有信息
3)可以通过hasattr()函数来判断是否含有该属性信息,setattr()函数可以设置对象的属性信息,getattr()函数可以获取对象的信息
5.实例对象和类对象
1)实例对象会覆盖类对象
2)类对象信息为整个类所共有
3)注意:不要将实例对象与类对象重名
6.slots
slots 就是用来设置对象的属性个数的
7.@property
@property装饰器是来简化参数暴露问题的
1)可以通过设置@property以及属性.setter来控制属性的参数范围以及一些规范
例如
@property
def birth(self):
return self._bitrth
@birth.setter
def birth(self,value):
if not instance(value,int):
rasie ValueErroe('value must be an Integer!')
elif(value<0)|(value>1000):
rasie ValueError('value must between0-1000!')
self._birth = value
2)这个时候实例对象名与方法名不能相同
面向对象编程(python)和部分面向对象高级编程的更多相关文章
- Python的几个高级编程技巧
Python有一些技巧对你来说是新知识,但是还有一些技巧会让你的代码效率大幅提升. 本文总结了一下自己用到的一些Python高级编程技巧,希望对大家有帮助. 列表生成器 a=[1,2,3] [x*x ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...
- Python 面向对象之高级编程
7.面向对象高级编程 7.1使用__slots__ python动态语言,new 对象后绑定属性和方法 Tip:给一个实例绑定的方法,对其他对象无效.可以通过对class绑定后,所有对象可以调用该方法 ...
- Python面向对象的高级编程
数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念. 使用__slots__ ...
- python 面向对象高级编程
数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念.
- Day6 - Python基础6 面向对象编程
Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发 ...
- python之路---面向对象编程(一)
一.设计思想的发展 面向机器(代码复杂,效率低,学习成本高,开发周期长)-------->面向过程(扩展性差,不适用多变的需求改变)----------->面向对象(扩展性好,但是可控性差 ...
- Python基础6 面向对象编程
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...
- C++面向对象高级编程(九)Reference与重载operator new和operator delete
摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一 Reference 引用:之前提及过,他的主要作用就是取别名,与指针很相似,实现也是基于指针. 1.引用必须有初值,且不能引用nul ...
随机推荐
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonag
报错信息: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.rs ...
- Linux 配置nginx 代理tomcat,配置ssl
我就直接干活不废话: 配置文件nginx, nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_l ...
- 《JavaScript高级程序设计》Chapter02 <script>元素
<script> 现代web应用程序通常将所有JavaScript引用放在<body>元素中的页面内容后面 <!DOCTYPE html> <html> ...
- input number类型去掉箭头和禁用滚轮
input number类型可以输入整型.浮点型.科学计数法的数据 禁用滚轮,在input标签内添加onmouseWheel="return false" <input ty ...
- Java基础学习——Scanner
import java.util.Scanner; public class HelloWord{ public static void main(String[] args){ Scanner s= ...
- HBase启动HMaster闪退
1.问题描述 (1)HBase启动 [Hadoop@master conf]$ start-hbase.sh SLF4J: Class path contains multiple SLF4J bin ...
- 博弈论练习6 Deleting Divisors(sg找规律,思维)
题目链接在这里:G-Deleting Divisors_牛客竞赛博弈专题班组合游戏基本概念.对抗搜索.Bash游戏.Nim游戏习题 (nowcoder.com) 这道题一道比较明显的思路是使用sg函数 ...
- java: javacTask: 源发行版 8 需要目标发行版 1.8
idea同一工作空间中不同工程使用不同的jkd版本.在本地idea同时使用jdk1.7和jdk1.8,不同的java工程使用不同的jdk版本,但是在java代码编译时报错,其报错信息为:[java: ...
- 手写 Java HashMap 核心源码
手写 Java HashMap 核心源码 手写 Java HashMap 核心源码 上一章手写 LinkedList 核心源码,本章我们来手写 Java HashMap 的核心源码. 我们来先了解一下 ...
- 【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
logo 避坑宝 v1.0.0 基于SpringBoot+uniapp企业黑红名单吐槽小程序 项目介绍 避坑宝 [避坑宝]企业黑红名单吐槽小程序是一个具有吐槽发布企业信息的一个平台,言论自由,评判自定 ...