自学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. Luogu4652 CEOI2017 One-Way Streets 树上差分

    传送门 题意:给出$N$个点.$M$条无向边的图,现在你需要给它定向,并满足$Q$个条件:每个条件形如$(x_i,y_i)$,表示定向之后需要存在路径从$x_i$走向$y_i$.问每条边是否都有唯一定 ...

  2. CF 799B T-shirt buying

    一道超级水的练习STL的题目 题目大意:有\(n\)件T恤,每件T恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种属性.接下来有\(m\)个人每个人都有一种喜欢的颜色,他们按先后顺序 ...

  3. Quartz.net 定时任务之储存与持久化和集群(源码)

    一.界面 1.这篇博客不上教程.直接看结果(包括把quartz任务转换成Windows服务) (1).主界面 (2).添加任务(默认执行) (3).编辑(默认开启) (4).关闭和开启 2.代码说明 ...

  4. VS2010、VS2012、VS2013、VS2015、VS2017各版本产品激活秘钥

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Visual Studio 2017(VS201 ...

  5. db2修改最大连接数

    查看当前连接数,sample为数据库名db2 list applications for db sample db2 list applications for db sample show deta ...

  6. beta阶段测试基本概况报告

    文件地址 测试基本信息                                                                                Bitmap 测试 ...

  7. Liinux 学习心得

    Linux 内核学习心得 姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 反汇编一个简 ...

  8. android——error opening trace file: No such file or directory (2)

    1.疑惑: 程序运行起来的时候日志总是显示下面这个错误,但是不影响程序的正常进行,我是用真机来测试的,android4.4.4(API17). 02-11 14:55:03.629 15525-155 ...

  9. SpringBoot-简单实例

    在进行实例之前,首先须确保电脑环境变量已经配置好,包括jdk.maven.此文章不做描述,不清楚自行百度. 第一步:来到springboot官网(https://start.spring.io/)下载 ...

  10. Java 一维数组作为参数和返回值

    一维数组作为参数: 传数组的引用 创建数组直接传,本质也是传数组的引用 传null public class Test { //数组作为参数时,可以传递3中形式 public void m1(int[ ...