python面向对象之初步认识
面向对象
类,用来描述一类事物的相同的特征或者属性。比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪叫。。。再比如汽车,四个轮子,都拥有车壳,都会跑,都有一定的承重。。。这些都是具备一些共同特征的事物。
类的定义方式:
class ClassName:
'类的帮助信息' # 类文档字符串
class_suite #类体,由类成员,方法,数据属性组成
下面是一个简单类的定义,其中函数内的self代指类的实例
class Cat:
'Cat类的帮助信息'
def __init__(self): # 类的初始化方法
print("Cat 的init方法被调用")
def eat(self): # 自定义方法
print("cat is eating")
def run(self): # 自定义方法
print("cat is running")
如何使用这个类?与调用函数的方式类似,类的使用是通过类名()进行使用,返回的是一个对象,也就是实例。
tom = Cat()
print(tom) # <__main__.Cat object at 0x000001B4A55123C8>
类中不仅仅可以定义函数,还可以定义变量。
class Car(object):
'Car'
CarCount = 0 # 类属性
def __init__(self):
self.name = '法拉利'
Car.CarCount += 1
def run(self):
print("%s" % self.name)
car = Car()
car1 = Car()
其中CarCount是类属性,只要是通过Car类实例化而来的,这些实例化对象便共享这一类属性,而__init__()函数中的name则是实例属性,属于每个实例独有的,虽然变量名相同,但是取值确是可以不同。还有一点这个例子中类的声明方式改变了,使用了python中的新式类的声明方式,即class 类名(object):pass,而之前的是使用的经典类的声明方式,关于两者区别可以看着这里新式类与经典类的区别
class Car(object):
'Car'
CarCount = 0 # 类属性
def __init__(self, name):
self.name = name
Car.CarCount += 1
def run(self):
print("%s is running" % self.name)
car = Car('法拉利')
print(Car.CarCount)
car.run()
car1 = Car('大奔')
print(Car.CarCount)
car1.run()
通过Car.CarCount我们可以发现 CarCount的值改变了,而且是通过不同的实例改变的同一个变量,这更加说明类属性是属于某个类实例化的所有的对象共有的,__init__函数里面比之前又多了一个形参,其中__init__函数被称为类的构造函数,是当一个对象实例化之后自动执行的函数,其中,类的普通的成员函数一般都至少具备一个self参数,比普通的函数稍微特别一点,self是个很神奇的参数,不写不行,当调用类的成员函数时,可以通过打印self查看,我们会看到一般都会打印出<__main__.Car object at 0x000001ABF02D8CF8>这样类似的语句,可以看出self可以用来代表实例化的对象。当调用类中的方法是通过
对象名.函数名()进行调用的。
到这里可以书写简单的类了
python面向对象之初步认识的更多相关文章
- python面向对象入门(1):从代码复用开始
本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论.所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介 ...
- python 面向对象初级篇
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
- Python 面向对象 基础
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
- python面向对象进阶(八)
上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- Python面向对象详解
Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...
随机推荐
- MySQL之两张表关系查找例子
teacher表 mysql> select * from teacher; +-----+--------+-----+---------+----------+ | tid | tname ...
- tomcat配置虛擬路徑
1.server.xml设置 打开Tomcat安装目录,在server.xml中<Host>标签中,增加<Context docBase="硬盘目录" path= ...
- JavaScript this 的指向问题
原文作者:SegmentFault ——写bug 原文链接:https://segmentfault.com/a/1190000015438195 this的指向已经是一个老生常谈的问题,每逢面试都要 ...
- element ui table的所有属性
1. table 的props: data: { type: Array, default: function() { return []; } }, size: String, width: [St ...
- 记录从裸机到TensorFlow GPU版运行 的配置过程
实验室原来有一台装Ubuntu Server系统的服务器,安装有tensorflow,在使用过程中经常出现断网.死机.自动关机等毛病,忍无可忍,决定重装系统 配置如下:Dell工作站,Xeon-E5 ...
- learning scala pattern matching 03
code: package com.aura.scala.day01 object patternMatching03 { //当不同类型对象需要调用不同方法时,仅匹配类型的模式非常有用. def g ...
- 浅谈"$fake$树"——虚树
树形$dp$利器——"$fake$"树(虚树$qwq$) 前置知识: $1.$$dfs$序 $2.$倍增法或者树链剖分求$lca$ 问题引入: 在许多的树形动规中,很多时候点特 ...
- Linux的MySQL安装和配置(详细)
打开centos系统 输入root用户和密码(我的用户和密码都是root) 查看有没有安装mysql rpm -qa|grep mysql 没有返回任何信息说明没有安装 我是用的centos7,默认安 ...
- Vue路由管理之Vue-router
一.Vue Router介绍 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的. ...
- SSM框架的配置Spring+Springmvc +Mybatis
ssm框架是由spring mvc +spring+mybatis组成 快速阅读 通过spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mv ...