自学Python5.3-类和对象的简单操作
自学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-类和对象的简单操作的更多相关文章
- day 22 面向对象 类与对象 名称空间操作
一.面向对象 1.面向过程编程 核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式. 优点:复杂的问 ...
- (三)类数组对象 NamedNodeMap简单介绍
Ele.attrbutes将返回一个NamedNodeMap对象,即NamedNodeMap存储的是元素的“特性Attribute”集合.而集合中的每一个元素,都是Attr类型的对象. html: & ...
- 获取单列集合,双列集合,数组的Stream流对象以及简单操作
获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...
- Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】
类和对象 (简单的了解一下这个概念,初步有个印象,这个概念很重要,后面会着重讲) 类:具有相同属性和方法的对象的集合: 对象:万物皆对象: 概念很抽象(每当我看不到概念的时候,我就会通过举例来理解) ...
- 10C++类和对象
类和对象 8.1 面向对象程序设计方法概述 到目前为止,我们介绍的是C++在面向过程的程序设计中的应用.对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其 ...
- python 类和对象上
面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定) 面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构使 ...
- Java——类和对象
前言 Java语言是一种面向对象的语言.面向对象的思想是在七十年代的时候由IBM的SmallTalk语言最先推广.那什么是面向对象呢?面向对象指的是一种开发模式.早期的计算机编程使用的是面向过程的 ...
- 自学Python5.1-面向对象与面向过程
自学Python之路 自学Python5.1-面向对象与面向过程 面向过程:根据业务逻辑从上到下写代码. 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开 ...
- 自学Python5.2-类和对象概念
自学Python之路 自学Python5.2-类和对象概念 面向对象编程的2个非常重要的概念:类和对象 对象是面向对象编程的核心: 在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出 ...
随机推荐
- UOJ67 新年的毒瘤 tarjan
题目传送门 题意:给出一个$N$个点.$M$条边的无向图,找出其中的点,满足去掉该点与和它相连的边之后,这个图会变成一棵树.$N , M \leq 10^5$ 说是毒瘤,真的不毒瘤 思考一下,我们需要 ...
- Maven私有仓库: 发布release版本报错:Return code is: 400, ReasonPhrase: Repository does not allow upd ating assets: maven-releases.
今天在将一个maven组件由SNAPSHORT升级为正式版本1.0.0,然后执行发布: mvn clean deploy -pl ielong-common -am -DskipTests, 报错:R ...
- WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型
首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...
- SpringCloud Eureka参数配置项详解(转)
Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考. Eure ...
- vue-cli 3.0 路由懒加载
当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 1. 安装 synta ...
- Linux-C-Program:makefile
注:本文参照博客:https://blog.csdn.net/initphp/article/details/7692923 1. 概述2. 示例说明2.1 无makefile编译2.2 有makef ...
- Mvc_扩展@html
HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MVC页面都可用)建立好扩展方法后: @Html.CreateGanderRad ...
- Ionic 1 & 2 开发常见问题 Q&A
原文发表于我的技术博客 本文分享了在 Ionic 1 & 2 版本开发过程中常见问题的一些 Q&A,供慕课网同学或其他朋友参考. 原文发表于我的技术博客 1. 版本的问题 Ionic ...
- Hybrid APP基础篇(一)->什么是Hybrid App
最新更新 一个开源的快速混合开发框架:https://github.com/quickhybrid/quickhybrid Android.iOS.JS三端内容初步都已经完成,有完善的设计思路.教程以 ...
- Abstractive Summarization
Sequence-to-sequence Framework A Neural Attention Model for Abstractive Sentence Summarization Alexa ...