自学Python之路

自学Python5.3-类和对象的简单操作

1. 定义一个类

定义一个类的格式如下:

class 类名:
方法列表

 举例1 : 

class Cat:    #定义一个Cat类
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")

 举例2:

class Car:  # 定义一个Car类
# 属性
# 方法
def getCarInfo(self):
print('车轮子个数:%d, 颜色%s'%(self.wheelNum, self.color)) # 稍后介绍
def move(self):
print("车正在移动...")

说明:

  • 定义类时有2种:新式类和经典类,上面的Car为经典类,如果是Car(object)则为新式类
  • 类名 的命名规则按照"大驼峰"

2. 创建对象

类不会自动执行,于是需要创建对象。

创建对象的格式为:

  对象名 = 类()  

 举例1:

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
#创建一个对象
tom = Cat()

 举例2:

class Car:  # 定义一个Car类
# 属性
# 方法
def getCarInfo(self):
print('车轮子个数:%d, 颜色%s'%(self.wheelNum, self.color)) # 稍后介绍
def move(self):
print("车正在移动...")
#创建一个对象
BWM = Car()

3. 调用对象的方法

  举例1 :

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
#创建一个对象
tom = Cat()
#调用tom指向的对象中的方法
tom.eat()
tom.drink()

4. 获取对象添加属性

  举例1 :

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
#创建一个对象
tom = Cat()
#调用tom指向的对象中的方法
tom.eat()
tom.drink()
# 给tom指向的对象添加两个属性
tom.name = “汤姆”
tom.age = 40
print("%的年龄是:%d"%(tom.name,tom.age))

  

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
def introduce(self):
print("%的年龄是:%d"%(tom.name,tom.age))
#创建一个对象
tom = Cat()
#调用tom指向的对象中的方法
tom.eat()
tom.drink()
# 给tom指向的对象添加两个属性
tom.name = “汤姆”
tom.age = 40
#获取属性
tom.introduce()

5. 创建多个对象

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
def introduce(self):
print("%的年龄是:%d"%(tom.name,tom.age))
#创建一个对象
tom = Cat()
#调用tom指向的对象中的方法
tom.eat()
tom.drink()
# 给tom指向的对象添加两个属性
tom.name = “汤姆”
tom.age = 40
#获取属性
tom.introduce()
#创建另一个对象
lanmao = Cat()
#调用lanmao指向的对象中的方法
lanmao.eat()
lanmao.drink()
# 给lanmao指向的对象添加两个属性
lanmao.name = “蓝猫”
lanmao.age = 12
#获取属性
tom.introduce()
lanmao.introduce()  

  这样的结果肯定不对,那是因为lanmao.introduce()调用内存的时候对应的是print("%的年龄是:%d"%(tom.name,tom.age)) ,那么如何解决此问题???

class Cat:
#属性
#方法
def eat(self):
print("猫在吃鱼....")
def drink(self):
print("猫正在喝kele.....")
def introduce(self):
print("%的年龄是:%d"%(self.name,self.age))
#创建一个对象
tom = Cat()
#调用tom指向的对象中的方法
tom.eat()
tom.drink()
# 给tom指向的对象添加两个属性
tom.name = “汤姆”
tom.age = 40
#获取属性
tom.introduce()
#创建另一个对象
lanmao = Cat()
#调用lanmao指向的对象中的方法
lanmao.eat()
lanmao.drink()
# 给lanmao指向的对象添加两个属性
lanmao.name = “蓝猫”
lanmao.age = 12
#获取属性
tom.introduce()
lanmao.introduce()  

self总结:

  • 所谓的self,可以理解为自己
  • self就相当于一个变量, 可以换成任何一个字符
  • 可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思
  • 某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

......

自学Python5.3-类和对象的简单操作的更多相关文章

  1. day 22 面向对象 类与对象 名称空间操作

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

  2. (三)类数组对象 NamedNodeMap简单介绍

    Ele.attrbutes将返回一个NamedNodeMap对象,即NamedNodeMap存储的是元素的“特性Attribute”集合.而集合中的每一个元素,都是Attr类型的对象. html: & ...

  3. 获取单列集合,双列集合,数组的Stream流对象以及简单操作

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

  4. Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】

    类和对象 (简单的了解一下这个概念,初步有个印象,这个概念很重要,后面会着重讲) 类:具有相同属性和方法的对象的集合: 对象:万物皆对象: 概念很抽象(每当我看不到概念的时候,我就会通过举例来理解) ...

  5. 10C++类和对象

    类和对象 8.1 面向对象程序设计方法概述 到目前为止,我们介绍的是C++在面向过程的程序设计中的应用.对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其 ...

  6. python 类和对象上

    面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定) 面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构使 ...

  7. Java——类和对象

    前言   Java语言是一种面向对象的语言.面向对象的思想是在七十年代的时候由IBM的SmallTalk语言最先推广.那什么是面向对象呢?面向对象指的是一种开发模式.早期的计算机编程使用的是面向过程的 ...

  8. 自学Python5.1-面向对象与面向过程

    自学Python之路 自学Python5.1-面向对象与面向过程 面向过程:根据业务逻辑从上到下写代码. 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开 ...

  9. 自学Python5.2-类和对象概念

    自学Python之路 自学Python5.2-类和对象概念 面向对象编程的2个非常重要的概念:类和对象 对象是面向对象编程的核心: 在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出 ...

随机推荐

  1. 初始化应用程序数据ng-init指令

    ng-init指令初始化应用程序数据. 如果我们想给文本框一个初化的值: <div ng-app="" ng-init="Name='Leo'"> ...

  2. Java 中单引号和双引号的区别

    引自:https://blog.csdn.net/hubianyu/article/details/39700367 单引号引的数据 是char类型的 双引号引的数据 是String类型的char定义 ...

  3. [Spark][Python][DataFrame][SQL]Spark对DataFrame直接执行SQL处理的例子

    [Spark][Python][DataFrame][SQL]Spark对DataFrame直接执行SQL处理的例子 $cat people.json {"name":" ...

  4. [Spark][Hive]外部文件导入到Hive的例子

    外部文件导入到Hive的例子: [training@localhost ~]$ cd ~[training@localhost ~]$ pwd/home/training[training@local ...

  5. 金蝶PDA金蝶盘点机金蝶仓库条码管理方案-采购入库单教程

    采购入库单有两种做法: 第一种:按照采购订单下推的采购入库单. 第二种:直接新增采购入库单,也就是不按照采购订单下推. 按照采购订单下推生成采购入库单,会以采购订单的商品品种和数量作为应收.扫描条码入 ...

  6. tomcat内存溢出问题记录

    问题说明:公司内网环境中部署的jenkins代码发版平台突然不能访问了,查看tomcat的catalina.out日志发现报错如下: [root@redmine logs]# tail -f /srv ...

  7. nginx应用总结(1)-- 基础知识和应用配置梳理

    在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介Nginx是一个高性能的HTTP和反向代理服务 ...

  8. Hybrid APP基础篇(一)->什么是Hybrid App

    最新更新 一个开源的快速混合开发框架:https://github.com/quickhybrid/quickhybrid Android.iOS.JS三端内容初步都已经完成,有完善的设计思路.教程以 ...

  9. HDU 3537 Daizhenyang's Coin

    链接 [http://acm.hdu.edu.cn/showproblem.php?pid=3537] 题意 题意:已知一排硬币中有n个硬币正面朝上,输入正面朝上的硬币的位置ai.两人轮流操作, 每次 ...

  10. Linux内核分析——进程的切换和系统的一般执行过程

    进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 (一)进程调度与进程调度的时机分析 1.不同类型的进程有不同的调度需求 第一种分类: (1)I/O-bound:频繁进行I ...