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

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

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

  基本概念:

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

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

  如何创建一个类:

  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. node里面的buffer理解

    node提供了专门读写文件的模块,文件内容都是2进制存放在内存中的 node读取文件的结果都是16进制,那么你要学会进制转换,二进制0b开头 ,八进制0开头,十六进制0x 基础知识: 1字节=8bit ...

  2. url编码解码的问题(urlencode/quote)

    import urllib.parse params = { "wd":"hello人工智能" } # 将字典形式的进行编码 query_str = urlli ...

  3. CentOS 7 配置Maven

    https://blog.csdn.net/wangyang163wy/article/details/75530872 CentOS 7 配置MavenMaven是一个高效的软件项目管理工具,通过M ...

  4. DataGrid 查不出数据 注意事项

    总结以下几条:1.SQL文在数据控中查询成功在写入,表内字段名尽量复制,手打太容易错了.写SQL写错了,没有智能提示.2.DataGrid数据源先绑定.3.检查parameter顺序,条件的顺序也要考 ...

  5. 【转】浅析Python中的struct模块

    [转]浅析Python中的struct模块 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概 ...

  6. openGL之坐标变换

  7. 记录 一次深夜救火:datanode.data.dir

    火灾背景: Hadoop集群,4个节点,每一台配置都不一样 火灾现场: 1.突然发现DN4硬盘报警,检查硬盘,发现挂载如下: /home 200GB /home/data 3TB 然后发现datano ...

  8. Go语言中的struct tag

    有时在Go的结构体定义时会看到这样的形式: type User struct { UserId int `json:"user_id" bson:"b_user_id&q ...

  9. 【Android休眠】之PowerKey唤醒源实现【转】

    转自:https://blog.csdn.net/u013686019/article/details/53677531 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  10. Boost.Asio的使用技巧

    基本概念 Asio proactor I/O服务 work类 run() vs poll() stop() post() vs dispatch() buffer类 缓冲区管理 I/O对象 socke ...