Python编程入门到实践 - 笔记( 9 章)


第 9 章主要讲的类,这个之前在 shell 中没遇到过

一直运用的也不是很溜,不过多敲多练,应该会有进步吧

创建类和使用类

创建一个 Dog 类

---------------------------------------------------------------------

class Dog():    
     def __init__(self, name, age):    
          self.name = name    
          self.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(‘willie‘, 6)    
my_dog.sit()    
my_dog.roll_over()

print("My dog‘s name is " + my_dog.name.title() + ".")    
print("My dog is " + str(my_dog.age) + " years old.")

------------------------------------------------------------------------

Willie is now sitting.    
Willie rolled over!    
My dog‘s name is Willie.    
My dog is 6 years old.

创建多个实例

------------------------------------------------------------------------------

class Dog():    
     def __init__(self, name, age):    
          self.name = name    
          self.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(‘willie‘, 6)    
your_dog = Dog(‘lucy‘, 3)

print("My dog‘s name is " + my_dog.name.title() + ".")    
print("My dog is " + str(my_dog.age) + " years old.")    
my_dog.sit()

print("\nYour dog‘s name is " + your_dog.name.title() + ".")    
print("Your dog is " + str(your_dog.age) + " years old.")    
your_dog.sit()

------------------------------------------------------------------------------

My dog‘s name is Willie.    
My dog is 6 years old.    
Willie is now sitting.

Your dog‘s name is Lucy.    
Your dog is 3 years old.    
Lucy is now sitting.

Car 类练习

------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
           self.year = year    
     def get_descriptive_name(self):    
          long_name = self.year + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

my_new_car = Car(‘audi‘, 24, ‘2016‘)    
print(my_new_car.get_descriptive_name())

------------------------------------------------------------------------------------

2016 Audi 24

添加属性默认值

-------------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
             self.odometer_reading = 0

def get_descriptive_name(self):    
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):    
          print("This car has " + str(self.odometer_reading) + " miles on it.")

my_new_car = Car(‘audi‘, ‘24‘, ‘2016‘)    
print(my_new_car.get_descriptive_name())    
my_new_car.read_odometer()

-------------------------------------------------------------------------------------------

2016 Audi 24    
This car has 0 miles on it.

修改属性的值

-------------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):    
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
           return long_name.title()

def read_odometer(self):    
          print("This car has " + str(self.odometer_reading) + " miles on it.")

my_new_car = Car(‘audi‘, ‘24‘, ‘2016‘)    
print(my_new_car.get_descriptive_name())    
my_new_car.odometer_reading = 23    
my_new_car.read_odometer()

-------------------------------------------------------------------------------------------

2016 Audi 24    
This car has 23 miles on it.

通过方法修改属性的值

-------------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
           self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):    
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):    
          print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):    
          self.odometer_reading = mileage

my_new_car = Car(‘audi‘, ‘24‘, ‘2016‘)    
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(45)    
my_new_car.read_odometer()

-------------------------------------------------------------------------------------------

2016 Audi 24

This car has 45 miles on it.

通过方法对属性的值进行递增

-------------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):    
           long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):    
          print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):    
          if mileage >= self.odometer_reading:    
                self.odometer_reading = mileage    
          else:    
                print("You can‘t roll back an odometer!")    
     def increment_odometer(self, miles):    
          self.odometer_reading += miles

my_used_car = Car(‘subaru‘, ‘outback‘, 2013)    
print(my_used_car.get_descriptive_name())

my_used_car.update_odometer(23500)    
my_used_car.read_odometer()

my_used_car.increment_odometer(100)    
my_used_car.read_odometer()

-------------------------------------------------------------------------------------------

2013 Subaru Outback    
This car has 23500 miles on it.    
This car has 23600 miles on it.

继承 : 子类的方法 __init__( )

父类必须包含在当前文件中,且位于子类前面

定义子类时,括号中必须指定父类的名称

super( ) 是一个特殊函数,将父类和子类关联起来,让 ElectricCar 实例包含父类的所有属性

父类也称为超类。

-------------------------------------------------------------------------------------------

class Car():    
     def __init__(self, make, model, year):    
          self.make = make    
           self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):    
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):    
          print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):    
          if mileage >= self.odometer_reading:    
               self.odometer_reading = mileage    
          else:    
               print("You can‘t roll back an odometer!")    
     def increment_odometer(self, miles):    
          self.odometer_reading += miles

class ElectricCar(Car):    
     def __init__(self, make, model, year):    
          super().__init__(make, model, year)

my_tesla = ElectricCar(‘tesla‘, ‘model s‘, 2016)    
print(my_tesla.get_descriptive_name())

-------------------------------------------------------------------------------------------

2016 Tesla Model S

给子类定义属性和方法

-------------------------------------------------------------------------------------------

class Car():  
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):  
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):  
          print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):  
          if mileage >= self.odometer_reading:    
               self.odometer_reading = mileage    
           else:    
               print("You can‘t roll back an odometer!")    
     def increment_odometer(self, miles):    
          self.odometer_reading += miles

class ElectricCar(Car):    
     def __init__(self, make, model, year):    
          super().__init__(make, model, year)    
          self.battery_size = 70    
     def describe_battery(self):    
          print("This car has a " + str(self.battery_size) + "-kWh battery.")

my_tesla = ElectricCar(‘tesla‘, ‘model s‘, 2016)  
print(my_tesla.get_descriptive_name())    
my_tesla.describe_battery()

-------------------------------------------------------------------------------------------

2016 Tesla Model S  
This car has a 70-kWh battery.

重写父类的方法

假设 Car 类中有一个名为 fill_gas_tank( ) 的函数,但是它对电动汽车毫无意义

可以在子类中重写该函数,Python就会运转子类中的代码,

而且还会保留父类中的其他函数

------------------------------------------------------------

def fill_gas_tank():  
         print("This car doesn‘t need a gas tank")

------------------------------------------------------------

将实例用作属性

新建一个 class Battery() 的类

在 class ElectricCar(Car) 类中指定 class Battery()

-------------------------------------------------------------------------------------------

class Car():  
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):  
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
           return long_name.title()

def read_odometer(self):  
           print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):  
          if mileage >= self.odometer_reading:    
               self.odometer_reading = mileage    
          else:    
               print("You can‘t roll back an odometer!")    
     def increment_odometer(self, miles):    
          self.odometer_reading += miles

class Battery():    
     def __init__(self, battery_size=70):    
          self.battery_size = battery_size    
     def describe_battery(self):    
           print("This car has a " + str(self.battery_size) + "-kWh battery.")

class ElectricCar(Car):    
     def __init__(self, make, model, year):    
          super().__init__(make, model, year)    
           self.battery = Battery()

my_tesla = ElectricCar(‘tesla‘, ‘model s‘, ‘year‘)

print(my_tesla.get_descriptive_name())    
my_tesla.battery.describe_battery()

-------------------------------------------------------------------------------------------

2016 Tesla Model S  
This car has a 70-kWh battery.

导入单个类

my_car.py导入car.py中的 Car 类

car.py 文件内容如下

-------------------------------------------------------------------------------------------

class Car():  
     def __init__(self, make, model, year):    
          self.make = make    
          self.model = model    
          self.year = year    
          self.odometer_reading = 0

def get_descriptive_name(self):  
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + str(self.model)    
          return long_name.title()

def read_odometer(self):  
           print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):  
          if mileage >= self.odometer_reading:    
               self.odometer_reading = mileage    
          else:    
               print("You can‘t roll back an odometer!")    
     def increment_odometer(self, miles):    
          self.odometer_reading += miles

-------------------------------------------------------------------------------------------

my_car.py 文件内容如下

-----------------------------------------------------------------

from car import Car

my_new_car = Car(‘audi‘, ‘24‘, 2016)  
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23

导入模块中的类

从 car.py 文件中导入 ElectricCar 类

-------------------------------------

from car import ElectricCar

-------------------------------------

导入模块中的多个类

------------------------------------------

from car import ElectricCar, Car

------------------------------------------

导入整个模块

直接导入 car.py 文件中全部函数

------------------------------------------

import car

my_beetle = car.Car(‘volkswagen’, ‘beetle’)

------------------------------------------

Python标准库

collections 模块中的 OrderedDict 类

-------------------------------------------------------------------------------------------

from collections import OrderedDict

favorite_languages = OrderedDict()

favorite_languages[‘jen‘] = ‘python‘  
favorite_languages[‘sarah‘] = ‘c‘    
favorite_languages[‘edward‘] = ‘ruby‘    
favorite_languages[‘phil‘] = ‘python‘

for name, language in favorite_languages.items():  
     print(name.title() + "‘s favorite language is " + language.title() + ".")

-------------------------------------------------------------------------------------------

Jen‘s favorite language is Python.

Sarah‘s favorite language is C.

Edward‘s favorite language is Ruby.

Phil‘s favorite language is Python.

时间: 2024-12-25 19:49:50

Python编程入门到实践 - 笔记( 9 章)的相关文章

Python编程入门到实践 - 笔记(1,2章)

自学 Python 有段时间了,总是觉得自己基础不牢,想着把看完的两本基础书写个博客做个笔记啥的. 准备在重新看一遍<Python编程入门到实践>,坚持写博客笔记. Python编程入门到实践的前两章笔记,学习的内容如下: 查看当前环境中的 python 版本 python环境的搭建 变量和变量的命名 字符串的打印 修改字符串的大小写 制表符和换行符 删除空白字符 python的整数运算,计算平方,立方 使用 str() 函数 查看当前环境中的 python 版本 命令行下输入 python 

Python编程入门到实践 - 笔记( 8 章)

第 8 章主要练习了各种函数,内容如下 定义一个简单的函数 向函数传递信息 什么是形参 什么是实参 位置参数 多次调用函数 关键字实参 默认值参数 返回值 return 让参数编程可选的 返回字典 结合使用函数和 while 循环 传递列表 在函数中修改列表 传递任意数量的实参 传递任意数量的参数并循环打印 结合使用位置参数和任意数量实参 使用任意数量的关键字实参 导入整个模块 导入特定的函数 使用 as 给函数指定别名 使用 as 给模块指定别名 导入模块中所有的函数 定义一个简单的函数 直接

Python编程入门到实践 - 笔记( 5 章)

第 5 章练习了以下内容 简单的 if 判断语句 判断字符串是否相等,还是不等 进行数字的大小比较 and,or 比较 检查列表中是否存在指定的元素 if,if-else,if-elif-else 语句写法 if 判断列表是否为空 使用多个列表进行比较判断 这一章的内容也比较简单,感觉和 shell 差不多,但还是多练习吧. 希望路过的大牛指出不足,小弟在此谢过了. 一个简单的 if 判断语句 循环打印 cars 列表中的元素,如果其中的元素等于 bmw,就全部大写打印 否则只是将元素的首字母大

Python编程入门到实践 - 笔记( 6 章)

第 6 章主要练习了各种字典,以下内容 什么是字典 字典中 键-值 的关系 一个简单的字典 通过字典中的键查找其对应的值 在字典中添加 键-值 修改字典中的值 遍历字典中的键值对 items( ) 遍历字典中的键 keys( ) 遍历字典中的值 value( ) 遍历字典中的值并且去重复 set( ) 列表中嵌套字典 通过 for 循环将字典添加到同一个列表中 在字典中存储列表并打印 什么是字典? 我自己来个不成熟的总结吧:就是一个高级列表,为啥说是高级列表,因为列表中的元素是单一的,没有属性

Python编程入门到实践 - 笔记( 7 章)

第 7 章讲了用户输入 input( ) 和 while 循环,内容如下 input( ) 工作原理 超过一行的 input( ) int( ) 来获取数字的输入,进行比较 求模运算 简单的 while 循环.我自己的理解就是设定一个条件,while 满足这个条件开始循环,不满足退出 break 直接退出 continue 跳出当前层的循环 避免无限循环 while 在列表中的应用 while 删除列表中指定的字符串 remove() 用户输入的字符来填充字典 input( ) 工作原理 首先定

Python编程入门到实践 - 笔记( 3 章)

练习内容包括 创建并访问列表 列表的索引 使用列表中的各个值 修改列表中的元素 在列表中添加元素 append() 在列表中插入元素 insert() 在列表中删除元素 del,pop() 根据值删除列表中的元素 remove() 对列表中的元素进行排列 1)永久性修改 sort(),按字母表正向排列 2)永久性修改 sort(reverse=True),按字母表反向排列 3)临时修改 sorted(),按字母表正向排列 对列表中的元素进行反转打印 reverse() 计算列表长度 len()

Python编程入门与实践pdf电子版下载

Python编程入门与实践pdf电子版下载 分享链接:https://pan.baidu.com/s/1h7TfuuUcaju8nkrMZgv-hg 提取码:7lo8 本书针对想要学习Python却无从下手的同学们准备的,希望好的资源能够给老铁提供有用的帮助 书籍目录 第一部分 基础知识 第1章 起步 1.1 搭建编程环境 1.1.1 Python 2和Python 3 1.1.2 运行Python代码片段 1.1.3 Hello World程序 1.2 在不同操作系统中搭建Python编程环境

Python编程入门到实践(三)

1.异常 异常是使用try-except代码块处理的.try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办. 使用了try-except代码块时,即便出现异常,程序也将继续运行:显示你编写的友好错误消息,而不是令用户迷惑的traceback.. print(5/0) Traceback (most recent call last): File "exception_division", line 1, in <module> pri

Python:从入门到实践--第三章--列表简介--练习

#1.将一些朋友的姓名存储在一个列表中,并将其命名为friends.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. #2.继续使用1中的列表,为每人打印一条消息,每条消息包含相同的问候语,但抬头为相应朋友的名字 #3.创建一个自己喜欢的出行方式列表.根据该列表打印一系列有关这些出行方式的宣言. friends = ['马脑壳','小波','玮哥','二小姐','短命','田鸡'] print(friends[0] +'\n' + friends[1] + '\n' + friend