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 ...
随机推荐
- 02_Tutorial 2: Requests and Responses 请求和响应
1.请求和响应 1.文档 https://www.django-rest-framework.org/tutorial/2-requests-and-responses/ https://q1mi.g ...
- 通过自定义属性获取指定checkbox是否选中
$("input[conferid='"+conferid+"']").is(':checked'); $("input[conferid='1234 ...
- html5文件夹上传源码
前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...
- LibreOJ #6165. 一道水题
二次联通门 : LibreOJ #6165. 一道水题 /* LibreOJ #6165. 一道水题 欧拉线性筛 其实题意就是求区间[1, n]所有数的最小公倍数 那么答案就是所有质因子最大幂次的乘积 ...
- 带你了解HTTP协议(一)
本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 TCP/IP 协议族进行 ...
- python3 pyinstaller 图标改变不了的问题
命令 pyinstaller -F ./test.py --noconsole --icon=test.ico 在使用后可能发现新生成的图标仍然为默认图标,有以下解决方案: 将生成的exe文件复制到另 ...
- [WEB安全]Weblogic漏洞总结
0x01 Weblogic简介 1.1 叙述 Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开 ...
- 将Excel文件导入到Navicat Premium中日期变为0000-00-00
在网上查询了一些文章,说要改excel的单元格格式,我试验了好几次,不管是设置成文本,还是日期,都始终是 0000-00-00. 最后改变了办法,把数据库中的date类型设置 成 varchar,等导 ...
- java一周学习回顾
快速阅读 本周在学习java过程中主要是快马观花,对java的常用框架进行相关配置 ,进行简单的调用 .包括kafka,dubbo ,zookeeper.centos配置java环境.如何打war ...
- html 获取地址栏信息
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...