Python中类与对象的初认识

1.Python 面向对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。

如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。

接下来我们先来简单的了解下面向对象的一些基本特征。


2.面向对象技术简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 方法:类中定义的函数。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

3.类的声明

1)类的关键字:

从第一天第一个项目起我们就接触过关键字,这是语言中内定的一个语法规则吧,通过关键字告诉电脑下面一个字母或一段代码是什么,要用来干什么,告诉电脑怎么以哪种规则去用。

而class就是类的关键字,告诉系统我要定义一个类了。让系统用理解类的规则来理解我下面的一些代码。没有关键字来声明一下,系统就不知道下面的代码是什么。

2)标识符语法:

<1>合法的标识符,由字母数字下划线组成,其中数字不能开头。python2是ASCII码,python3是UTF-8编码表。python3编码方式是Unicode(万国码),支持中文,utf-8,utf-16,兼容ACSII;python2ASCII,不支持中文。

<2>大小写敏感(区分大小写)

<3>没有长度限制

<4>不能使用关键字、保留字

开发习惯:

1望文生义,如:age=13,num=12;外行写法:asdasda=13,haha=12
2.大小写:<1>包名全小写,<2>常量全大写,<3>变量、函数名小驼峰,开头首字母小写,后面首字母全大写,<4>类名大驼峰,首字母全大写。
3.其他命名:hello_world

3)要继承的类名:

这是一个更大的类,就是自己定义的类是其子类,可以从这个父类中继承一些功能与特性,现在使用默认的是object。父类和子类的关系应该像一个学校与这个学校中的一个班级的关系,自定义类就是新开一个班,班不是随便开的,是在学校这个环境下开的。不然开了没有学校的帮助这个班可能毫无用处。新开的班名就是类的标识符。

Object是一个超类,t就像是一个所有类的天道规则吧!。不管是吃饭睡觉打豆豆还是开班传教。总之这一切是在这个世界上完成的。在这个世界的运转规则下完成的。


4.类中对象初始化

1)关键字

python中一共含有32个关键字:

‘false’, ‘none’, ‘true’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’

关键字-是Python内置的、具有特殊意义的表示符
使用时关键字后面不需要括号

因为这里的__int__是一个内置函数,因此它以关键字def开头

2) __int__函数与参数:

前面有说到一个超类 object ,init()就是这个超类中诞生的一个用于初始化对象数据的一个函数,就相当于 object这个天道下诞生的一个具有初始化能力的神,init()函数的参数是定义了这个类所具有的一些特性。举个栗子来说:

Long long ago,天道(object)诞生了,后来女娲(init函数)也诞生了。她有一项能力就是捏土造人。人是一种什么存在呢?女娲在脑海中对人进行了想像,人有这么些特征(属性):五官,四肢,分男女等等。总之,这个神(init)给你设置了一些属性,那么不管你怎么变化都是在这些属性之内,她说你是卵生,你就不会是从蛋里出来。否则你就是跑错片场了,不属于这个类,不是这个类中的对象。

3)初始化数据:

在这个类中Init函数已经赋予了对象一些属性,比如说学生这个类,学生中的某个对象是具有名字,性别,身高,体重这些属性的。(其他的属性美丑之类的未定义不考虑)但是名字是什么?性别是什么?这需要初始化一下数据!

回到神话中,女娲要造的“人”,包含五官,四肢,分男女等属性,但是如果她把这些和别的大神们说,别的大神还是不知道“人”是什么,因为五官是什么,四肢是什么其他大神还是不知道(由此可见五官,四肢等其实和“人”也一样是中对象),这个时候女娲就要做出赋值行为,现场做出五官,四肢实体然后组成一个人,这个时候其他大神就明白了,即使见到一个比较胖的人也还能认出这东西是女娲造的人。

5.类的使用:

1) 类的方法

穿上类的马甲叫方法,脱了马甲叫函数。
在类里面设置的函数,进行一些关于类中对象的处理的步骤方法。

2)类属性值的引用

类不是觉得无聊随便设立的一个东西,而是为了对一些具有相同属性特征的对象进行统一处理的一个模块。那么人们既然建立了类这种东西来处理一些问题,那么也必然会想要从中得到处理的一些数据。这时便进行了类属性值的引用,因为既然是一个类,那么某些角度上来看,其中的所有对象都是一样的。只有再深入一点,去看每个对象的属性值才可以区分每一个对象,所以我们可以这样获取数据:stu.name ,先写出是哪个对象然后在点一下深入到某个属性中,如果只有对象名,那这个对象这么多属性系统怎么知道你要哪一个,索性给你这个对象属性存放的地址你自己找去吧!如果只有属性没有对象名,那你这个要求就是太无理了,系统会直接给你个错误提示就不再搭理你了!

3)类方法的引用

如果说类只能够帮助人们整理数据然后让人们来引用的话,那还不如直接建立一个字典。

所有类有一个叫方法的功能,你可能要获取某种结果是需要对类中对象进行某种处理,那我就直接把方法写出来。这样你想要对哪个对象进行什么处理,那你直接告诉方法这个东西,方法会直接给你个结果。这样看,类中的方法是不是一个很好用很合格的助手呢。

6.实例

实例1:

#面向对象
#需要有意义的面向对象的代码,不是有了类就是面向对象
#核心:类 对象
#实例化
#方法:设计层面   函数:程序运形,过程式一种称谓class Student():name = 'redhat'                               ##变量:数据成员age = 12def print_file(self):                  #类的方法print('name:' + self.name)print('age:' + str(self.age))student = Student()                          #实例化
student.print_file()                        #类方法的引用

实例2:

#对象:对象是现实世界或者思维世界中的实体在计算机中的反映,
#它将数据以及这些数据上的操作封装在一起#类:一类事物的统称,对象是类具体化的产物,也就是实例化#不同的对象有什么不同特点:比如年龄,姓名class Student():name = ''age = 0def __init__(self,name,age):#构造函数self.name = nameself.age = agedef do_homework(self):print('homework')student1 = Student('redhat',38)
print(student1.name)
print(student1.age)

实例3:

class Dog():def __init__(self,name):self.name = namedef __str__(self):#必须返回一个字符串return '这是 %s' %(self.name)Gofei = Dog('旺财')
print(Gofei)

Python面对对象编程——对象、类详解及实例相关推荐

  1. java并发编程Future类详解

    作用和举例 future类的作用就是为了调用其他线程完成好后的结果,再返回到当前线程中,如上图举例: 小王自己是主线程,叫外卖等于使用future类,叫好外卖后小王就接着干自己的事去了,当外卖到了的时 ...

  2. c++语言 tcp例子,C++ boost::asio编程-同步TCP详解及实例代码

    boost::asio编程-同步TCP boost.asio库是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. boost.asio库支持TCP.UDP.IC ...

  3. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  4. python中内置数学函数详解和实例应用之三角函数_初级阶段(二)

    学习目标: 利用python进行三角函数运算 学习内容: python中的三角函数合集和应用实例 转载请注明出处! 学习产出: 环境:python 3.7, 利用shell进行实例操作. Note: ...

  5. python中内置数学函数详解和实例应用之三角函数曲线_初级阶段(三)

    学习目标: 利用matplotlib 和 numpy 画三角函数曲线 学习内容: 正弦,余弦,正切,余切函数曲线 双曲正弦,双曲余弦,双曲正切,双曲余切函数曲线 反正弦,反余弦,反正切,反余切函数曲线 ...

  6. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  7. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  8. JAVA中的类和对象之this的详解

    系列文章目录 第一章 JAVA中的类和对象之this的详解 目录 前言 一.为什么要有this引用 二.this的三种用法 1.this.成员变量 2.this.成员方法 3.this()调用其它的构 ...

  9. Python元类详解

    文章目录 Python元类详解 Python谜团 元类的本质 调用一个类时发生了什么 再探元类 自定义元类 彩蛋:跳过python解释器 Python元类详解 元类比99%的用户所担心的魔法要更深,如 ...

最新文章

  1. 剑指offer:面试题38. 字符串的排列
  2. NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述
  3. DWS和各异构数据库的差异对比
  4. 同源策略Same-origin policy
  5. python selenium 爬取js加载的内容为空,Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容...
  6. 【算法与数据结构】中缀表达式转为后缀表达式
  7. careyshop-商城框架系统
  8. JS-概述-基本语法-变量-数据类型
  9. 44 岁的微软下一步是什么?
  10. ibatis常用16条SQL语句
  11. android 屏幕长宽,怎么获取手机屏幕长宽
  12. c语言谭浩强第八章函数PPT,清华谭浩强C语言 第8章 函数.ppt
  13. GlobeImposter
  14. cannot re-initialize CUDA in forked subprocess.To use CUDA with multiprocessing,you must use the ‘sp
  15. 趣味数学--用1到9这九个数组成一个四位数乘以一位数等于四位数的等式,每个数只能用一次
  16. 控件测试之单行文本框测试
  17. 2017南宁(重温经典)
  18. 果园机器人的课文_《果园机器人》课文原文
  19. 电池的寿命(c语言)
  20. 上海迪士尼将新增黄色小狗可琦安系列主题商品

热门文章

  1. R语言安装.tar.gz包
  2. 特征重要度(feature importance)如何获取、排序、可视化、以及可视化阈值设置?
  3. 高斯过程及其家族往事
  4. GEO/SRA数据库
  5. PacBio软件总览 - 初级分析
  6. java怎么接收多选框多数据_表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)...
  7. JAVA基础8-封装(2)
  8. 【ES6】变量的解构赋值
  9. 【Harvest源码分析】GetFourZeroCrossingIntervals函数
  10. ListView的高级使用