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.


本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1965593
相关文章
|
7月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
893 7
|
7月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
1522 1
Python API接口实战指南:从入门到精通
|
7月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
476 3
|
7月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
698 3
|
7月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
1230 2
|
7月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
495 3
|
7月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1309 1
|
7月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
711 0
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
314 1
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
174 1

推荐镜像

更多