自学Python之路

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

1. 定义一个类

定义一个类的格式如下:

  1. class 类名:
  2. 方法列表

 举例1 : 

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

 举例2:

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

说明:

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

2. 创建对象

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

创建对象的格式为:

  1. 对象名 = 类()  

 举例1:

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. #创建一个对象
  9. tom = Cat()

 举例2:

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

3. 调用对象的方法

  举例1 :

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. #创建一个对象
  9. tom = Cat()
  10. #调用tom指向的对象中的方法
  11. tom.eat()
  12. tom.drink()

4. 获取对象添加属性

  举例1 :

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. #创建一个对象
  9. tom = Cat()
  10. #调用tom指向的对象中的方法
  11. tom.eat()
  12. tom.drink()
  13. # 给tom指向的对象添加两个属性
  14. tom.name = “汤姆”
  15. tom.age = 40
    print"%的年龄是:%d"%(tom.nametom.age))

  

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. def introduce(self):
  9. print("%的年龄是:%d"%(tom.nametom.age))
  10. #创建一个对象
  11. tom = Cat()
  12. #调用tom指向的对象中的方法
  13. tom.eat()
  14. tom.drink()
  15. # 给tom指向的对象添加两个属性
  16. tom.name = “汤姆”
  17. tom.age = 40
  18. #获取属性
  19. tom.introduce()

5. 创建多个对象

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. def introduce(self):
  9. print("%的年龄是:%d"%(tom.nametom.age))
  10. #创建一个对象
  11. tom = Cat()
  12. #调用tom指向的对象中的方法
  13. tom.eat()
  14. tom.drink()
  15. # 给tom指向的对象添加两个属性
  16. tom.name = “汤姆”
  17. tom.age = 40
  18. #获取属性
  19. tom.introduce()
  20. #创建另一个对象
  21. lanmao = Cat()
  22. #调用lanmao指向的对象中的方法
  23. lanmao.eat()
  24. lanmao.drink()
  25. # 给lanmao指向的对象添加两个属性
  26. lanmao.name = “蓝猫”
  27. lanmao.age = 12
  28. #获取属性
  29. tom.introduce()
  30. lanmao.introduce()  

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

  1. class Cat:
  2. #属性
  3. #方法
  4. def eat(self):
  5. print("猫在吃鱼....")
  6. def drink(self):
  7. print("猫正在喝kele.....")
  8. def introduce(self):
  9. print("%的年龄是:%d"%(self.nameself.age))
  10. #创建一个对象
  11. tom = Cat()
  12. #调用tom指向的对象中的方法
  13. tom.eat()
  14. tom.drink()
  15. # 给tom指向的对象添加两个属性
  16. tom.name = “汤姆”
  17. tom.age = 40
  18. #获取属性
  19. tom.introduce()
  20. #创建另一个对象
  21. lanmao = Cat()
  22. #调用lanmao指向的对象中的方法
  23. lanmao.eat()
  24. lanmao.drink()
  25. # 给lanmao指向的对象添加两个属性
  26. lanmao.name = “蓝猫”
  27. lanmao.age = 12
  28. #获取属性
  29. tom.introduce()
  30. 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. python winpdb远程调试

    1.使用rpdb2.start_embedded_debugger ,注意要将参数fAllowRemote 设置为True 2.winpdb前端GUI使用python2 3.rpdb兼容python2 ...

  2. vue 动态加载组建

    <component :is="comp1"></component> data () { return { comp1:'', } } require.e ...

  3. 面试2——java基础3

    21.Http请求的get和post的区别? get:从 指定的资源请求数据.请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的 post:向指定的资源提交要被处理的数据.请注意, ...

  4. 大数据之Flume

    什么是Flume ApacheFlume是一个分布式的.可靠的.可用的系统,用于高效地收集.聚合和将大量来自不同来源的日志数据移动到一个集中的数据存储区. 系统要求 1. JDK 1.8 或以上版本 ...

  5. 基于Nginx+Keepalived的LB服务监控(邮件报警)

    IDC两台机器上部署了Nginx+Keepalived主从模式的LB代理负载层,现在需要对LB进行每日巡检和服务监控,利用SendEmail邮件监控. 0)SendEmail部署 参考:http:// ...

  6. Nginx入门【转】

    原文地址:http://blog.csdn.net/u012486840/article/details/53098890 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上 ...

  7. vue 动态修改 css

    <div v-for="i in resultDate" v-if="i.ProjectId>='4'" @click=EveyTesttInfo( ...

  8. Flask之WSGI:Werkzeug

    WSGI 一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HT ...

  9. Daily Scrumming* 2015.12.20(Day 12)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1090 https://github.com/buaaclubs-team/temp-front/com ...

  10. sqoop 使用笔记

    好久没有更新自己技术博客,现在开始工作了,把自己遇到的问题写到这里边来 主要把自己的问题写出来,分享给大家 sqoop 导入数据时候 有时候会遇到mysql 中有sql 中的关键字 这时候如果直接导出 ...