萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类

第一章 Python基础

第九节 类

面向对象编程时,都会遇到一个概念,,python也有这个概念,下面我们通过代码来深入了解下。

其实类 和函数都是为了节省代码,有了类的的概念,就可以把相同的代码写在父类,子类继承后就可以直接使用,而且通过选择对应的父类就可以直接使用对应父类的内容。

创建和使用类

 1 class Dog(): #认识狗这类东西
 2     def __init__(self, name, age): #狗是肯定有名字和年龄的,是个狗就有,要用户填写
 3         self.name = name #拿下来存着
 4         self.age = age #拿下来存着
 5     def sit(self):
 6         print(self.name.title() + " is now sitting.")# 培训可以让狗坐下
 7     def roll_over(self):
 8         print(self.name.title() + " rolled over!")# 培训可以让狗翻滚
 9
10 my_dog = Dog(‘willie‘, 6) #买了一个狗,起好名字
11 print("My dog‘s name is " + my_dog.name.title() + ".") #我看看我的狗叫什么名字
12 print("My dog is " + str(my_dog.age) + " years old.")#我看看我的狗几岁了


class关键字:来定义一个类。类名通常首字母为大写。

__init__方法:特殊方法,每当实例类的时候都会运行。其中的形参self必不可少,而且必须位于最前面。

self形参:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候用不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身。

实例的方法是指定类名以及需要传入的实参。

要访问实例的属性或者调用方法,可使用句点表示法

使用类和实例

 1 class Car():#定义一个车子类
 2     def __init__(self, make, model, year): #车子类都得有牌子、型号、制造年份
 3         self.make = make#把用户输入的信息存为车子的属性
 4         self.model = model
 5         self.year = year
 6         self.odometer_reading = 0 #<- here 建立一个新的属性“里程表”,不用用户输入,默认为0
 7
 8     def get_descriptive_name(self): # 建立一个函数(方法、外挂)来描述车子
 9         long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model
10         return long_name.title()
11
12     def read_odometer(self): # 建立一个函数(方法、外挂)来描述打印车子的里程表
13         print("This car has " + str(self.odometer_reading) + " miles on it.")
14 "到此就写了一套方法来对付车这一类东西"
15 my_new_car = Car(‘audi‘, ‘a4‘, 2016)#买新车啦
16 print(my_new_car.get_descriptive_name()) #我来看看我的新车的信息
17 my_new_car.read_odometer()#我来看看我的新车的里程表


可以看到,我们给Car类的属性指定了默认值self.odometer_reading = 0。如果要修改它,我们可以通过实例直接访问它并修改,比如:my_new_car.odometer_reading = 23。或者通过方法修改属性的值。或者通过方法对属性的值进行递增。

class Car():
    --snip--
    #通过方法修改属性的值
   



继承

一个类继承另一个类时,他将自动获得另一个类的所有属性和方法;原有的类称为父类,新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

现在我们有一个Car类如下


创建子类实例时,python首先给父类所有属性赋值。

接下来我们创建新类EleCar

class Car():
    --snip--
 


首先父类必须位于子类前面。

super()是一个特殊函数,将父类和子类关联起来。使得可调用子类的父类的方法__init__(),让子类包父类的所有属性。

给子类定义属性和方法没有任何限制,比如:

class Car():
    --snip--
 



 1 class ElectricCar(Car):#电车和一般的车还是有区别的,要写清楚电车的特有的情况怎么对付
 2     def __init__(self, make, model, year):
 3         super().__init__(make, model, year)
 4         self.battery_size = 70 #电车有电池啊 默认70
 5
 6     def describe_battery(self): #电车可以看看我的电池多大
 7         print("This car has a " + str(self.battery_size) + "-kWh battery.")
 8
 9 my_tesla = ElectricCar(‘tesla‘, ‘model s‘, 2016) #买新电车了
10 print(my_tesla.get_descriptive_name()) #我看看我的新电车的信息
11 my_tesla.describe_battery()# 我看看我新电车的电池信息

如果需要重写父类的方法,只需定义一个与重写的父类方法同名的方法即可。

python还可以使用其他类的实例作为自己类的属性。

导入类

类似函数,类也可以保存为.py文件形成模块从而进行导入。

导入单个类: from model_name import class_name

导入一个模块的多个类: from model_name import class_name1, class_name2

导入一个模块所有类: from model_name import *

导入整个模块: import model_name

还可以在一个模块中导入另一个模块

python标准库

其是一组模块。模块collections中有一个类OrderedDict。字典的键值对没有顺序,但是这个类几乎和字典相同,区别只在于记录了键值对的顺序。

 1 from collections import OrderedDict
 2
 3 favorite_languages = OrderedDict() #除了标签 还有顺序的字典,列表和字典特点的集合
 4
 5 favorite_languages[‘jen‘] = ‘python‘
 6 favorite_languages[‘sarah‘] = ‘c‘
 7 favorite_languages[‘edward‘] = ‘ruby‘
 8 favorite_languages[‘phil‘] = ‘python‘
 9
10 for name, language in favorite_languages.items(): #可以按顺序一个个抓出来打印
11     print(name.title() + "‘s favorite language is " +language.title() + ".")



原文地址:https://www.cnblogs.com/romannista/p/10326298.html

时间: 2024-10-10 14:56:10

萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类的相关文章

萌新向Python数据分析及数据挖掘 第一章 Python基础 (上)未排版

因word和博客编辑器格式不能完全对接,正在重新排版,2019年1月1日发出第一章完整版 本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 python安装以及环境搭建 python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不

萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型

本文将参考<Python编程 从入门到实践>的讲述顺序和例子,加上自己的理解,让大家快速了解Python的基础用法,并将拓展内容的链接添加在相关内容之后,方便大家阅读. 好了!我们开始第一章的学习. 第一章 Python基础 第一节 Python安装以及环境搭建 Python的安装和环境变量的配置通过百度查询即可解决,这里不作赘述. IDE的选择:因为后期需要用来做数据分析,所以直接安装Anaconda会是一个不错的选择. Anaconda详细安装使用教程 https://blog.csdn.

萌新向Python数据分析及数据挖掘 第一章 Python基础 第八节 函数

第一章 Python基础 第八节 函数 定义函数 函数 其实就可以理解为外挂,把一些常用的.重复率比较多你又不想重复写的东西写进函数,加上开关实现简化操作 举个简单的例子 1 def greet_user(username): 2 #定义一个叫做"迎接用户"的外挂,让他能直接打印一个问候语,括号里面是函数需要输入的东西,也就是个性化的东西 3 """先是简单的问候语""" 4 print("Hello! "

萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常

第一章 Python基础 第十节 文件和异常 从文件中读取数据 读取文件.文件路径   1 filename = 'pi_digits.txt' #文件名取个代号 2 #读取整个文件 3 with open(filename) as file_object: 4 contents = file_object.read()# 给内容取个代号 5 print(contents.rstrip()) 6 #逐行读取 7 with open(filename) as file_object: 8 for

萌新向Python数据分析及数据挖掘 第二章 pandas 第五节 Getting Started with pandas

Getting Started with pandas In [1]: import pandas as pd In [2]: from pandas import Series, DataFrame In [3]: import numpy as np np.random.seed(12345) import matplotlib.pyplot as plt plt.rc('figure', figsize=(10, 6)) PREVIOUS_MAX_ROWS = pd.options.dis

萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks

Python Language Basics, IPython, and Jupyter Notebooks In [5]: import numpy as np #导入numpy np.random.seed(12345)#设定再现的的随机数 np.set_printoptions(precision=4, suppress=True) #设置打印设置 Signature: np.set_printoptions(precision=None, threshold=None, edgeitem

用 WEKA 进行数据挖掘 ——第一章:简介

1.简介数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至算法优化,确实需要很多背景知识.但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西.他们的精力,集中在特征提取,算法选择和参数调优上.那么,一个可以方便地提供这些功能的工具,便是十分必要的了.而weka,便是数据挖掘工具中的佼佼者.Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

第一章计算机基础

第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 人用程序通过编程语言解释器,指令操作系统,最终控制电脑硬件来做符合人们需求的过程 1.2 操作系统 操作系统用于协同或控制硬件之间进行工作,常见的操作系统有那些: windows linux centos [公司线上一般用] mac 1.3 解释器或编译器 编程语言的开发者写的一个工具,将用户写的代码转换成010101交给操作系统去执行