面向对象编程(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 ...
随机推荐
- C#实现统一登录(SSO)
SSO的基本概念 SSO英文全称Single Sign On(单点登录).SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同 ...
- java调用c++的几种方式
jni 类似c#调用c++的方式,定义java端的c++代码接口. package crayon.jni; public class JNITest { public native static vo ...
- springboot+mybatis+vue
https://www.cnblogs.com/wlovet/p/10980579.html
- yugong诠释
整个迁移方案,分为两部分: 全量迁移 增量迁移 过程描述: 增量数据收集 (创建oracle表的增量物化视图) 进行全量复制 进行增量复制 (并行进行数据校验) 原库停写,切到新库 回滚方案: 开启新 ...
- vue项目如何配置路由
vue3项目中如何配置路由 1.下载vue-router,在路由文件中引入相关依赖 import {createRouter,createWebHashHistory} from 'vue-route ...
- Lenovo Vantage 完全卸载
Lenovo Vantage 完全卸载 我的T480,最近因为在休眠状态下断电导致不开机,按开机键所有灯闪烁.翻阅百度发现居然是通病,自从 type-c 供电方案以来就有,无奈只有被奸商坑了350,只 ...
- pom.xml配置资源过滤
<build> <!--设置资源过滤--> <resources> <resource> <directory>src/main/java& ...
- 7、jmeter配置元件-HTTP信息头配置元件
根据对方服务器的要求来配置消息头 (重点)Gzip:发送给你压缩包 提高速度 性能等等 同样的数据 只要页面没有变更 就不会重新压缩 节省带宽
- PHP接受json数据
PHP接受json数据 获取请求的参数 $input = file_get_contents("php://input"); $input = json_decode($input ...
- centos docker 部署.net6项目
1 .生成dockerfile文件 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 5000 # 一般情况下必 ...