我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程。其实不管是面向过程,还是面向对

象,说白了就是一种编程方式而已。既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” 和 “对象” 来实

现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  基本概念:

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

  如何创建一个类:

  1、class是关键字,表示类

  2、创建对象,类名称后加括号即可

  如何使用类:

  一、实例化:

#创建了一个名为people的类
class people:
gender = "male" #共有的特征
def print_name(self):
print("print_name-----> %s"%self)
x = int(6) #int一个值,赋值给x
print(x) #打印输出x的值
obj = people() #people加括号会返回一个值,并赋值给obj,这就实例化
print(obj) #打印输出obj的值
-------------输出结果-------------------
6 #x的值
<__main__.people object at 0x00000000028C9C88> #得到的就是一个对象

  二、引用类的特征(类的变量)和技能(类的函数)

#创建了一个名为people的类
class people:
gender = "male"
def print_name(self):
print("print_name-----> %s"%self)
print(people.gender) #类名.变量名,打印这个类的共有特征,性别
print(people.print_name) #类名.函数名,打印这个函数的返回值
people.print_name("michael") #类名.函数名加括号调用函数并传了一个参数
-----------------------输出结果------------------------
male #共有特征是男
<function people.print_name at 0x00000000026DB950> #返回值的内存地址
print_name-----> michael #函数运行结果

  如何使用实例:

#创建了一个名为people的类
class people:
gender = "male"
def __init__(self,nickname):
self.nick = nickname
def print_name(self,age):
print("%s's age is %s"%(self.nick,age))
p1 = people("michael") #类名加括号里传参数调用会返回一个值,赋值给p1得到一个具体的对象
p2 = people("jack") #类名加括号里传参数调用会返回一个值,赋值给p2得到一个具体的对象
print(p1.nick) #打印对象p1的名字
print(p2.nick) #打印对象p2的名字
print(p1.gender) #打印所有对象共有的特征,性别
print(p2.gender) #打印所有对象共有的特征,性别
print(p1.print_name) #打印p1的绑定方法的返回值
print(people.print_name) #打印 类名.函数名 的返回值
p1.print_name(18) #self=p1就是p1自己本身的值传给位置参数self
people.print_name(p2,23) #这个结果同上是一样的,只是在位置参数那直接传的p1
-----------------------------输出结果---------------------------------------
michael #p1.nick的名字
jack #p2.nick的名字
male #共有特征,男
male #共有特征,男
<bound method people.print_name of <__main__.people object at 0x0000000002929E10>> #实例化对象的绑定方法的返回值的内存地址
<function people.print_name at 0x000000000292B9D8> #类名.函数名的返回值的内存地址
michael's age is 18 #绑定方法传参的执行结果
jack's age is 23 #类名.函数名 直接传参执行的结果

  总结:

  类:

  1、实例化;

  2、引用名字(类名.变量名,类名.函数名)。

  实例:

  引用名字(实例名.类的变量,实例名.绑定方法,实例名.实例自己的变量名)。

  其他:

  1、类对变量的:增、删、改、查。

#创建了一个名为people的类
class people:
gender = "male"
marital_status = "bachelordom"
def __init__(self,nickname):
self.nick = nickname
def print_name(self,age):
print("%s's age is %s"%(self.nick,age))
people.interest = "python" #类people中共有特征,增加爱好
print("共同爱好:",people.interest) #将结果输出打印
people.marital_status = "married" #经过不断的努力学习Python后,都成功脱单,修改婚姻状态
print("修改后的婚姻状况:",people.marital_status) #将结果输出打印
print("性别:",people.gender) #查看类people的共有特征,性别
del people.marital_status #删除婚姻状况变量名
print(people.marital_status) #查看删除结果,报错说明删除成功
---------------------------输出结果------------------------------------
共同爱好: python
修改后的婚姻状况: married
性别: male
Traceback (most recent call last):
File "F:/Michael/day26/类和对象.py", line 79, in <module>
print(people.marital_status) #查看删除结果,报错说明删除成功
AttributeError: type object 'people' has no attribute 'marital_status'

  2、实例化,对对象对应的变量的:增、删、改、查。

#创建了一个名为people的类
class people:
gender = "male"
marital_status = "bachelordom"
def __init__(self,nickname):
self.nick = nickname
def print_name(self,age):
print("%s's age is %s"%(self.nick,age))
p1 = people("michael") #类名加括号里传参数调用会返回一个值,赋值给p1得到一个具体的对象
p1.interest = "basketball" #为对象p1增加爱好,篮球
print("增加的爱好:",p1.interest) #结果输出打印
p1.marital_status = "married" #经过不断的努力学习Python后,都成功脱单,修改婚姻状态
print("修改后的婚姻状况:",p1.marital_status) #结果输出打印
print("查看p1的名字:",p1.nick) #查看p1的名字
del p1.marital_status #删除p1婚姻状况
print("原婚姻状态:",p1.marital_status) #查看删除结果,未修改原状态则删除成功
-----------------------------输出结果-------------------------------------
增加的爱好: basketball
修改后的婚姻状况: married
查看p1的名字: michael
原婚姻状态: bachelordom

  

Python基础之初识类和对象的更多相关文章

  1. Python基础-面向对象初识--类

    什么是类 具有相似功能和属性的一类实物 什么是对象 类的具体体现,具体到一个 面向对象的优势 1.类是一组相似功能的集合,使组织结构更加清晰和规范化 2.研究面向对象要有上帝的思维,用面向对象设计程序 ...

  2. Python初识类与对象

    Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...

  3. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  4. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  5. 二十三. Python基础(23)--经典类和新式类

    二十三. Python基础(23)--经典类和新式类 ●知识框架   ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object):    ...

  6. 第三章:Python高级编程-深入类和对象

    第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...

  7. 《Java从入门到失业》第四章:类和对象(4.1):初识类和对象

    4类和对象 在第一章曾经简单介绍过,在面向对象的世界里,一切事物皆对象,当解决一个问题的时候,我们先会考虑这个问题会涉及到哪些事物,然后把事物抽象成类,当时还画了一张图如下: 从本章开始,我们一点一点 ...

  8. python基础-第七篇-7.1初识类和对象

    创建类和对象 刚开始我们接触得多的编程方式为面向过程编程,这种方式就是根据业务逻辑从上往下垒代码,后来又出现了函数式编程,就是为了提高代码的重用性,减轻程序猿的工作量--而今天我们即将学的 面向对象编 ...

  9. 零基础入门学习Python(36)--类和对象:给大家介绍对象

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

随机推荐

  1. RSA加解密

    RSA加密解密及数字签名Java实现 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一 ...

  2. tfs二次开发-利用tfs api做查询

    参考地址:https://msdn.microsoft.com/en-us/library/bb130306(v=vs.120).aspx You can query for bugs, tasks, ...

  3. zabbix系列~ 监控模式

    一 简介:讲讲监控相关的东西 二 监控模式 Active(主动式)agent —>常用    在Active agent模式下,Zabbix agent启动后,由agent端初始化和Zabbix ...

  4. i春秋 小漏洞也有大梦想

    i春秋上的课,提到了一些概念,学习并记录. 此文主要以了解概念为主,没有代码和实战. 水坑式攻击 百度定义: “水坑式攻击”,是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点, ...

  5. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)

    使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...

  6. python,关于这个里边的私有方法(private)、保护方法(protected)、公开方法(public)

    __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行 ...

  7. 内核探测工具systemtap简介【转】

    转自:http://www.cnblogs.com/hazir/p/systemtap_introduction.html systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工 ...

  8. NODE_ENV不是内部或外部命令,也不是可运行的程序

    NODE_ENV不是内部或外部命令,也不是可运行的程序 解决办法:安装across-env:npm install cross-env –save-dev 在运行命令加前缀:在NODE_ENV=xxx ...

  9. Git学习笔记04-管理修改

    Git跟踪并管理的是修改,而非文件.新增文件,修改一行,删除一点,都算是修改. 在.git工作区新增一个文件,test.txt,输入test git ...然后git add ​ ​ add之后修改t ...

  10. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD

    题意: 两个操作, 单点修改 询问一段区间是否能在至多一次修改后,使得区间$GCD$等于$X$ 题解: 正确思路; 线段树维护区间$GCD$,查询$GCD$的时候记录一共访问了多少个$GCD$不被X整 ...