类和实例

类是抽象的模版,例如汽车;而实例则是拥有相同方法的类的实现,例如汽车里面有大众、宝马、奔驰等等,这些车都能在地面上跑,但是它们的具体数据可以不一样。

calss Student(object)  #object是所有类的父类,如果没有继承的父类就填该类
pass           #定义类是通过pass关键字,之后可以实例化具体的类calss Student(object)  #类的实例def  __init__(self,name,age)#特殊函数__init__self.name = nameself.age = agedef speak(self,word = ‘nihao’)print(word + self.name)

python的实例是动态语言,所以允许用户自由绑定任何数据,例子:

student  =  Student(syz,18)
student.score = 100

访问限制

对于不想让外部访问的变量或者数据,可以定义私有变量,变量前面添加两个下划线__name,那么将不能通过student.__name的方式直接访问,实现原理是在内部生成_Student__name变量代替__name变量,但是此时注意,不要认为调用student.__name  = syz的方式修改,因为此时相当于添加了一个__name的变量,而程序的self__的变量并没有变。

为了得到或者修改私有变量,需要定义修改函数或者获取函数

def set_name(self,name):self.__name = name
def get_name(self):return self.__name

注意:__abc__前后都有双下划线的变量时特殊变量,函数可以直接访问,注意私有变量不要这样定义。

私有变量跟前面的内部变量还是有区别的,因为前边只加一个下划线的变量属于内部变量,原则上还是可以被外部变量访问的。

继承和多态

子类定义可以继承父类,并且可以在父类的基础上做修改,从而体现多态性。

例子:

def Animal(object):def run(self):print(‘I’m running’)def Dog(Animal):
def run(self):print(‘A dog running’)passdef Cat(Animal):
def run(self):print(‘A cat running’)pass

鸭子类型,只要有相应的方法,就看做是类似的。只要会跑就把他看做鸭子

获取对象信息

isinstance(‘123’,str)

True

getattr()   setattr()   hasattr()

# 首先你有一个command.py文件,内容如下,这里我们假若它后面还有100个方法class MyObject(object):def __init__(self):self.x = 9def add(self):return self.x + self.xdef pow(self):return self.x * self.xdef sub(self):return self.x - self.xdef div(self):return self.x / self.x
# 然后我们有一个入口文件 exec.py,要根据用户的输入来执行后端的操作
from command import MyObject
computer=MyObject()def run():inp = input('method>')if inp == 'add':computer.add()elif inp == 'sub':computer.sub()elif inp == 'div':computer.div()elif inp == 'pow':computer.pow()else:print('404')

上面使用了if来进行判断,那么假若我的command里面真的有100个方法,那我总不可能写100次判断吧,所以这里我们就会用到python的反射特性,看下面的代码

from command import MyObject
computer=MyObject()
def run(x):inp = input('method>')# 判断是否有这个属性if hasattr(computer,inp):# 有就获取然后赋值给新的变量func = getattr(computer,inp)print(func())else:# 没有我们来set一个setattr(computer,inp,lambda x:x+1)func = getattr(computer,inp)print(func(x))if __name__ == '__main__':run(10)

  

转载于:https://www.cnblogs.com/SUNYZBlog/p/9634430.html

Python基础——6面向对象编程相关推荐

  1. python基础之面向对象编程

    python基础之面向对象编程 面向对象编程思想 面向对象是一门编程思想,编程思想仅仅是一门思想,与任何技术无关 核心是对象两字,对象可以理解为特征与技能的结合体 基于该编程思想编写程序,就好比创造世 ...

  2. 带你学python基础:面向对象编程

    面向对象编程是个啥呢,其实,在传统的语言中,比如 C 语言,是不存在面向对象编程这个概念的,那时候的语言只有面向过程编程,也就是我们写代码从头写到底,最多也就是有函数.所以,这样的代码风格是比较难维护 ...

  3. Python基础课程-面向对象编程

    Python面向对象编程 在本文中,您将学习Python中的OOP的以下基本概念: Python类 对象实例 定义和使用方法 OOP继承 什么是面向对象编程(OOP)? 面向对象编程(Object-o ...

  4. Day7 - Python基础7 面向对象编程进阶 --转自金角大王

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...

  5. python面向对象编程的优点-Python 基础知识----面向对象编程

    一.面向对象编程介绍 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即先做什么再干什么然后干什么. 基于该思想编写程序好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化 ...

  6. Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))

    面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...

  7. Day6 - Python基础6 面向对象编程 --转自金角大王

    本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你 ...

  8. Python基础:面向对象编程实战——简易图书管理系统

    简易图书管理系统主要有以下功能:1.查询所有书籍2.添加书籍3.借阅书籍4.归还书籍5.退出系统.代码实现主要为: class Book:def __init__(self, name, author ...

  9. 第二章(1):Python入门:语法基础、面向对象编程和常用库介绍

    第二章(1):Python入门:语法基础.面向对象编程和常用库介绍 目录 第二章(1):Python入门:语法基础.面向对象编程和常用库介绍 1. Python 简介 1.1 Python 是什么? ...

最新文章

  1. 修改tomcat端口号的方法:
  2. Python面向对象---类的基本使用
  3. Web Dynpro公开课学习
  4. 各个平台的mysql重启命令
  5. 天冷打字全靠抖?!桌面暖手宝,体验10s速热,温暖升级,冬天有TA就够了
  6. jupyter notebook + 服务器中docker 使用配置
  7. 百万在线的美拍直播弹幕系统架构实现
  8. GB2312简体中文编码表(转)
  9. Android xUtils框架最全使用详解
  10. mysql 重建索引,mysql优化之索引重建
  11. 《Jenkins持续集成入门到精通02》
  12. 国产系统银河麒麟(龙芯MIPS)远程访问自研windows程序
  13. Windows的重要服务端口135/137/138/139/445
  14. IP协议详解之头部结构
  15. c语言用递归求质因子,使用递归方法求解整数质因子
  16. Testing WLW!!
  17. JDBC使用教程详解
  18. LaTeX入门|(2)定制专属模板
  19. i 技术会笔记 | Druid在爱奇艺的实践和技术演进
  20. 安恒6月赛部分做题记录

热门文章

  1. Python3 中你知道有多少错误和异常
  2. 亚马逊上海人工智能研究院:深度图模型实习生
  3. 2018年最实用机器学习项目Top 6(附开源链接)
  4. linux unix mac windows,文件路径-windows上的反斜杠和Mac OS/Linux/Unix上的正斜杠,Windows,倒,以及,macOSLinuxUNIX...
  5. java抽取注释_JAVA 注解教程(五)注解的提取
  6. android文件体系,Android文件体系-基础
  7. 自动点击屏幕脚本代码_原来这么简单,一分钟学会引流脚本
  8. 字符串固定长度 易语言_易语言宽字符数据类型怎么设置
  9. AI人才大战硝烟袅袅,缺口该如何填补?
  10. 一个学校内部的计算机网络属于,一个教室内计算机联成的网络属于____。