萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类
Posted 跨界混子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了萌新向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() + ".")
以上是关于萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类的主要内容,如果未能解决你的问题,请参考以下文章
萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常
萌新向Python数据分析及数据挖掘 第一章 Python基础 第九节 类
萌新向Python数据分析及数据挖掘 第一章 Python基础 第一节 python安装以及环境搭建 第二节 变量和简单的数据类型
萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第二节 线性回归算法 (下)实操篇
萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks
萌新向Python数据分析及数据挖掘 第二章 pandas 第五节 Getting Started with pandas