【python基础】整理笔记(2)

前续:

【python基础】整理笔记(1)

第九章 类

编写表示现实世界中的事物和类型的类,并基于这些类来创建对象。根据类来创建对象被称为实例化。
9.1.1 创建类
方法 __init __()
将方法定义成三个形参:self、name、age。在这个方法的定义中,形参 self 必不可少,还必须位于其他形参的前面,将自动传递self。

class Dog():
    """ 模拟小狗的简单尝试 """
    def __init__(self,name,age):
		""" 初始化属性name和 age """
		self.name = name
		sekf.age = age
    def sit(self)
    	""" 模拟小狗被命令蹲下 """
        print(self.name.title() + " is now sitting.")
    def roll_over(self):
        """ 模拟小狗被命令打滚 """
        print(self.name.title() + " rolled over.")

根据类创造实例:

my_dog = Dog("doudou",6)
my_dog.sit()
my_dog.roll_over()
输出:Doudou is now sitting.
Doudou rolled over.

9.3继承
9.3.1 子类的方法 __ init __()
创建子类的实例时,python首先要完成的任务是给父类的所有属性赋值。

class Car():  	
    """ 模拟汽车的简单尝试 """
  	def __init__(self,make,model,year):
  	    """ 初始化属性make,model和year """
    	self.make = make
   	    self.model = model
    	self.year = year
    	self.reading = 0
  	def get_name(self):
    	long_name = str(self.year) + ' ' + self.make + ' ' + self.model
    	return long_name.title()
  	def read(self):
    	print("This car hes " + str(self.reading) + " miles on it.")
  	def update(self,mileage):
    	if mileage >= self.reading:
      		self.reading = mileage
    	else:
      		print("Can't!")
	def inc(self,miles):
    	self.reading += miles
class ElCar(Car):
    """电动汽车的独特之处"""
  	def __init__(self,make,year):#初始化父类的属性
    	super().__init__(make,model,year)
#super()是一个特殊函数,帮助将父类和子类关联起来

my_car = Car('audi','a4',2016)
print(my_car.get_name())
my_car.update(23)
#my_car.reading = 23
my_car.read()
my_car.inc(10)
my_car.read()  
输出:2016 Audi A4
     This car hes 23 miles on it.
	 This car hes 33 miles on it.                       

9.3.3 给子类定义属性和方法
让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。

class Car():
	""" 模拟汽车的简单尝试 """
    # --snip--
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.reading = 0
    def get_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()
    def read(self):
        print("This car hes " + str(self.reading) + " miles on it.")
    def update(self, mileage):
        if mileage >= self.reading:
            self.reading = mileage
        else:
            print("Can't!")
    def inc(self, miles):
        self.reading += miles
class elCar(Car):
	"""电动汽车的独特之处"""
    def __init__(self,make,model,year):
        super().__init__(make, model, year)
        self.battery = 0 #新属性
    def describe_battery(self):#新属性对应函数
    	""" 打印一条电容量的信息 """
        print("This car hes a " + str(self.battery) + "-KWh battery.")
    
my_tesla = elCar('tesla','model s',2016)
print(my_tesla.get_name())
my_tesla.describe_battery()
输出:2016 Tesla Model S
     This car hes a 0-KWh battery.

9.3.4 重写父类的方法
在子类中重新定义一个这样的方法就可以改写父类方法。
9.3.5 将实例用作属性
将一个大型类拆成多个协同工作的小类。

class Car():
	""" 模拟汽车的简单尝试 """
    # --snip--
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.reading = 0
    def get_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()
    def read(self):
        print("This car hes " + str(self.reading) + " miles on it.")
    def update(self, mileage):
        if mileage >= self.reading:                     
            self.reading = mileage
        else:
            print("Can't!")
    def inc(self, miles):
        self.reading += miles
class Battery():
#将上个例题describe_battery(self)函数花成另一小类
	""" 模拟电动汽车电瓶的简单尝试 """
    def __init__(self,battery = 70):
    	"""初始化电瓶属性"""
        self.battery = battery
    def describe_battery(self):
    	""" 打印一条电容量的信息 """
        print("This car hes a " + str(self.battery) + "-KWh battery.")
class elCar(Car):
	"""电动汽车的独特之处"""
    def __init__(self,make,model,year):
        super().__init__(make, model, year)
        self.battery = Battery()
        #将新定义的小类赋给初始化属性
   #def describe_battery(self):
       #print("This car hes a " + str(self.battery) + "-KWh battery.")
   
my_tesla = elCar('tesla','model s',2016)
print(my_tesla.get_name())
my_tesla.battery.describe_battery()

9.4 导入类
创建一个包含类的模块,上个例:创建 car.py 文件将类都导入
再创建另一个文件 my_cars.py,将类导入
(1)导入一个类

from car import Car
my_car = Car('audi','a4',2016)
print(my_car.get_name())
my_car.update(23)
my_car.read()
my_car.read()

(2) 导入子类

from car import elCar
my_tesla = elCar('tesla','model s',2016)
print(my_tesla.get_name())
my_tesla.battery.describe_battery()

(3)导入多个类

from car import Car,elCar
my_car = Car('audi','a4',2016)
print(my_car.get_name())
my_tesla = elCar('tesla','model s',2016)
print(my_tesla.get_name())

(4)导入整个模块

import car
my_car = car.Car('audi','a4',2016)
print(my_car.get_name())
my_tesla = car.elCar('tesla','model s',2016)
print(my_tesla.get_name())

(5)将一个模块导入另一个模块 el_car.py
将Car存储在一个模块中car.py,将 elCar 和 Battery 类存储在另一个模块中

form car import Car
class Battery():
    --snip--
class elCar(Car):
    --snip--

在my_cars.py文件中

form car import Car
form el_car import elCar
my_car = Car('audi','a4',2016)
print(my_car.get_name())
my_tesla = car.elCar('tesla','model s',2016)
print(my_tesla.get_name())

9.5 Python标准库
9.6 类编码风格
类名应采用驼峰命名法,即类名每个单词的首字母都大写,实例名和模块名都采用小写格式,并加下划线区分。
在每个类后紧跟文档字符串。简要的阐述其功能。

第十章 文件和异常

10.1 从文件中读取数据
首先创建文件xxx.txt后缀

23234
23555
43656

读取

with open('xxx.txt') as file_object:    
	contents = file_object.read()
	    print(contents.rstrip())
输出:
23234
23555
43656	    

函数 open() 接受一个参数:打开文件的名称,
with 在不再访问文件后将其关闭,
close() 关闭文件,
read() 读取文件全部内容,到达文件末尾时返回一个空字符串,显示出来就是一个空行,
使用 rstrip() 函数删除字符串末尾的空白。

10.1.2 文件路径

file = 'C:\...\xxx.txt'
with open(file) as file_object:
	contents = file_object.read()
	    print(contents.rstrip())

10.1.3 逐行读取

with open('xxx.txt') as file_object:
	for line in file_object:
	   print(line)
输出:
23234

23555

43656

10.1.4 创建一个包含文件各行内容的列表

with open('xxx.txt') as file_object:
     lines = file_object.readlines()
for line in lines:
    print(line)

10.1.5 使用文件的内容

with open('xxx.txt') as file_object:
    #contents = file_object.read()
    #print(contents)
    lines = file_object.readlines()
string = ''
for line in lines:
    string +=line.rstrip()
    
print(string)
print(len(string))
输出:
232342355543656		
15

10.2 写入文件

name = 'xxx.txt'
	with open(name,'w') as file_object:
	    file_object.write("28747")name = 'xxx.txt'
	with open(name,'w') as file_object:
	    file_object.write("28747")
输出:
28747	    

(‘w’) 指要以写入模式打开这个文件。如果存在本文件,则清空原文件中的内容。
(‘r’) 指读取模式。
(‘a’) 附加模式。不会清空原文件。
(‘r+’) 读取并写入文件。
write() 写入字符串。

10.2.2 写入多行
write() 写入字符串文本末尾不会自动添加换行符,所有要在末尾加换行符

10.3 异常 error 并使用 try-excepttry-except-else 代码块
ZeroDivisionError异常
(1)无法运行 例:5/0

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    	5/0
ZeroDivisionError: division by zero

处理:

try:
	5/0
except ZeroDivisionError:
	print("You can't divide by zero!")

(2)使用异常避免崩溃

while True:
	n = input("n:")
	if n == 'q':
		break
    m = input("m:")
   if m == 'q':
        break
	answer = int(n)/int(m)
	print(answer)

处理:

while True:
	n = input("n:")    	   
	if n == 'q':
		break
	m = input("m:")
    if m == 'q':
        break
    try:
        answer = int(n)/int(m)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)

FileNotFoundError异常 没有找到要打开的文件
处理:

try:
    with open('xxx.txt') as file_object:    
        contents = file_object.read()
        print(contents.rstrip())
except FileNotFoundError:
	print("Sorry,the file xxx.txt does not exist!")

10.3.6 分析文本
读取单词个数

words = contents.split()
num = len(words)
print(num)

后续:

【python基础】整理笔记(3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值