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

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

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

  基本概念:

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

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

  如何创建一个类:

  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. 03-13_static关键字

    static主要作用 常见定义结构:public static void main(): static关键字可以用于定义属性及方法: static定义属性 在一个类之中,主要的组成就是属性和方法(分为 ...

  2. 关于SQL的over partition by 开窗语句在分页和统计中的使用总

    CREATE TABLE OrderInfo( ID INT IDENTITY(1,1) PRIMARY KEY, CustomerID INT NULL, TotalMoney DECIMAL(18 ...

  3. vue通俗易懂的子组件向父组件传值

    不多BB直接上图: 如上图:为子组件绑定点击事件 如上图:send方法触发父组件绑定的事件 如上图:为父组件绑定触发事件@myEvent="aa" aa方法接受子组件传过来的值

  4. Django REST Framework API Guide 04

    本节大纲 1.serializers 1.Serializers Serializers允许复杂的数据,像queryset和模型实例转换成源生的Python数据类型.从而可以更简单的被渲染成JSON, ...

  5. Kotlin中,lateinit 和 lazy{} 的区别

    1.lazy{} 只能用在val类型, lateinit 只能用在var类型 如 : val name: String by lazy { "sherlbon" }lateinit ...

  6. AndroidStudio Terminal的使用

    gradlew  assembleDebug  --stacktrace 查看使用的依赖的 Execution failed for task ':app:transformClassesWithMu ...

  7. TensorFlow学习笔记之--[tf.app.flags使用方法]

    很多时候在运行python代码的时候我们需要从外部定义参数,从而避免每次都需要改动代码.所以一般我们都会使用 argparse 这个库.其实TensorFlow也提供了这个功能,那就是 tf.app. ...

  8. dubbo源码分析4——SPI机制_ExtensionFactory类的作用

    ExtensionFactory的源码: @SPI public interface ExtensionFactory { /** * Get extension. * * @param type o ...

  9. requests库入门02-简单了解HTTP协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议. HTT ...

  10. http 遇到中文表单 转码

    #include <string> #include <vector> inline BYTE toHex(const BYTE x) { return x>9?x+55 ...