1. 给子类定义属性和方法
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += milesclass ElectricCar(Car):def __init__(self, make, model, year):# ...super(ElectricCar, self).__init__(make, model, year)self.battery_size = 70def 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()

给子类定义属性和方法其实和创建一个类差不多,该怎么创建就怎么创建,继承只是多了super哪一句还有开始指明父类,来继承父类的属性和方法。

  1. 重写父类的方法
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += milesdef fill_gas_tank():print("This car need a gas tank!")class ElectricCar(Car):def __init__(self, make, model, year):# ...super(ElectricCar, self).__init__(make, model, year)def fill_gas_tank():print("This car doesn't need a gas tank!")

如果你在子类内重新定义父类的方法,当你想要使用这个方法时,那么程序将会使用你重写的方法。

  1. 将实例用作属性
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += milesclass Battery():def __init__(self, battery_size=70):self.battery_size = battery_sizedef 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', 2016)print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()

上面这个例子就是把类Battery实例化给类ElectricCar作为属性。
这样做的好处就是在属性和方法过多时,可以使其更加整洁,也容易查找和修改。

  1. 模拟实物
    这个意思大概是,不能被语法困住,学习编程不仅仅只是学习它的语法,更应该学习在编程前的思考逻辑,如何能够快速,方便地解决一个问题,这种思考才是最重要的。

动手试一试:

# 9-6
class Restaurant():def __init__(self, restaurant_name, restaurant_type):self.restaurant_name = restaurant_nameself.restaurant_type = restaurant_typedef describe_restaurant(self):print("\n这家餐厅的名字是:" + self.restaurant_name + "\n这家餐厅的类型是" + self.restaurant_type)def open_restaurant(self):print("\n这家餐厅开始营业!")class IceCreamStand(Restaurant):def __init__(self, restaurant_name, restaurant_type):super().__init__(restaurant_name, restaurant_type)self.flavors = []def add_flavors(self, flavor):self.flavors.append(flavor)print('添加了' + flavor + '口味的')def read_flavors(self):print('我喜欢的冰淇淋口味有:')for flavor in self.flavors:print('\t' + flavor)my_icecreamstand = IceCreamStand('小小冰淇淋', '冰淇淋店')
my_icecreamstand.add_flavors('抹茶')
my_icecreamstand.add_flavors('香草')
my_icecreamstand.add_flavors('草莓')
my_icecreamstand.read_flavors()
# 9-7
class User():def __init__(self, first_name, last_name, **kd):self.first_name = first_nameself.last_name = last_nameself.preperties = {}for key, value in kd.items():self.preperties[key] = valuedef describe_user(self):print('\nfirst name: ' + self.first_name + '\nlast name: ' + self.last_name)for key, value in self.preperties.items():print(key + ': ' + value + '\n')class Admin(User):def __init__(self, first_name, last_name, **kd):super().__init__(first_name, last_name, **kd)self.privileges = ['can add post', 'can delete post', 'can ban user']def show_privileges(self):print(self.first_name + '所拥有的权限有:')for privilege in self.privileges:print('\t' + privilege)my_admin = Admin('admin', 'admin')
my_admin.show_privileges()
# 9-8
class User():def __init__(self, first_name, last_name, **kd):self.first_name = first_nameself.last_name = last_nameself.preperties = {}for key, value in kd.items():self.preperties[key] = valuedef describe_user(self):print('\nfirst name: ' + self.first_name + '\nlast name: ' + self.last_name)for key, value in self.preperties.items():print(key + ': ' + value + '\n')class Privileges():def __init__(self):self.privileges = ['can add post', 'can delete post', 'can ban user']def show_privileges(self):print('你所拥有的权限有:')for privilege in self.privileges:print('\t' + privilege)class Admin(User):def __init__(self, first_name, last_name, **kd):super().__init__(first_name, last_name, **kd)self.privileges = Privileges()my_admin = Admin('admin', 'admin')
my_admin.privileges.show_privileges()
# 9-9
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += milesclass Battery():def __init__(self, battery_size=70):self.battery_size = battery_sizedef describe_battery(self):print("This car has a " + str(self.battery_size) + "-kWh battery.")def get_range(self):if self.battery_size == 70:range = 240elif self.battery_size == 85:range = 270message = "This car can go approximately " + str(range)message += " miles on a full charge."print(message)def upgrade_battery(self):if self.battery_size != 85:self.battery_size = 85class ElectricCar(Car):def __init__(self, make, model, year):super().__init__(make, model, year)self.battery = Battery()my_tesla = ElectricCar('tesla', 'model s', 2016)print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
my_tesla.battery.upgrade_battery()
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

四、导入类

  1. 导入单个类
# 这里保存在car.py
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += miles
# 这里保存在my_car.py
from car import Carmy_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())    my_new_car.odometer_reading = 23
my_new_car,read_odomter()
  1. 在一个模块中存储多个类
# 这是保存为car.py
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += milesclass Battery():def __init__(self, battery_size=70):self.battery_size = battery_sizedef describe_battery(self):print("This car has a " + str(self.battery_size) + "-kWh battery.")def get_range(self):if self.battery_size == 70:range = 240elif self.battery_size == 85:range = 270message = "This car can go approximately " + str(range)message += " miles on a full charge."print(message)class ElectricCar(Car):def __init__(self, make, model, year):super().__init__(make, model, year)self.battery = Battery()
# 这是保存为my_electric_car.py
from car import ElectricCarmy_tesla = ElectricCar('tesla', 'model s', 2016)print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
  1. 从一个模块中导入多个类
这里保存在my_cars.py
from car import Car, ElectricCarmy_beetle = Car('Volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_nameJ())
  1. 导入整个模块
import carmy_beetle = car.Car('Volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())my_tesla = car.ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_nameJ())
  1. 导入模块中的所有类
from car import *my_beetle = Car('Volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_nameJ())
  1. 在一个模块中导入另一个模块
# 这是保存为car.py
class Car():def __init__(self, make, model, year,odometer_reading=0):self.make = makeself.model = modelself.year = yearself.odometer_reading = odometer_readingdef get_descriptive_name(self):long_name = str(self.yesr) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odomter(self):print("This car has " + str(self.odometer_reading) + " miles on it.")def updata_odometer(self, mileage):self.odometer_reading = mileagedef increment_odometer(self, miles):self.odometer_reading += miles
# 这里保存在electric_car.py
from car import Carclass Battery():def __init__(self, battery_size=70):self.battery_size = battery_sizedef describe_battery(self):print("This car has a " + str(self.battery_size) + "-kWh battery.")def get_range(self):if self.battery_size == 70:range = 240elif self.battery_size == 85:range = 270message = "This car can go approximately " + str(range)message += " miles on a full charge."print(message)class ElectricCar(Car):def __init__(self, make, model, year):super().__init__(make, model, year)self.battery = Battery()
# 这里保存在my_cars.py
from car import Car
from electric_car import ElectricCarmy_beetle = Car('Volkswagen', 'beetle', 2016)
print(my_beetle.get_descriptive_name())my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_nameJ())
  1. 自定义工作流程
    233
    自定义
    把握好每个类

动手试一试:

# 9-10
# 这里保存在restaurant.py
class Restaurant():def __init__(self, restaurant_name, restaurant_type):self.restaurant_name = restaurant_nameself.restaurant_type = restaurant_typedef describe_restaurant(self):print("\n这家餐厅的名字是:" + self.restaurant_name + "\n这家餐厅的类型是" + self.restaurant_type)def open_restaurant(self):print("\n这家餐厅开始营业!")
# 这里保存在my_restaurant.py
from restaurant import Restaurantmy_restaurant = Restaurant('北京烤鸭', '烤鸭店')
your_restaurant = Restaurant('糖醋排骨', '排骨店')
his_restaurant = Restaurant('宫保鸡丁', '鸡肉店')my_restaurant.describe_restaurant()
your_restaurant.describe_restaurant()
his_restaurant.describe_restaurant()
# 9-11
# 这里保存在users.py
class User():def __init__(self, first_name, last_name, **kd):self.first_name = first_nameself.last_name = last_nameself.preperties = {}for key, value in kd.items():self.preperties[key] = valuedef describe_user(self):print('\nfirst name: ' + self.first_name + '\nlast name: ' + self.last_name)for key, value in self.preperties.items():print(key + ': ' + value + '\n')class Privileges():def __init__(self):self.privileges = ['can add post', 'can delete post', 'can ban user']def show_privileges(self):print('你所拥有的权限有:')for privilege in self.privileges:print('\t' + privilege)class Admin(User):def __init__(self, first_name, last_name, **kd):super().__init__(first_name, last_name, **kd)self.privileges = Privileges()
# 这里保存在my_admin.py
from users import Adminmy_admin = Admin('admin', 'admin')
my_admin.privileges.show_privileges()
# 9-11
# 这里保存在user.py
class User():def __init__(self, first_name, last_name, **kd):self.first_name = first_nameself.last_name = last_nameself.preperties = {}for key, value in kd.items():self.preperties[key] = valuedef describe_user(self):print('\nfirst name: ' + self.first_name + '\nlast name: ' + self.last_name)for key, value in self.preperties.items():print(key + ': ' + value + '\n')
# 这里保存在admin.py
from user import Userclass Privileges():def __init__(self):self.privileges = ['can add post', 'can delete post', 'can ban user']def show_privileges(self):print('你所拥有的权限有:')for privilege in self.privileges:print('\t' + privilege)class Admin(User):def __init__(self, first_name, last_name, **kd):super().__init__(first_name, last_name, **kd)self.privileges = Privileges()
# 这里保存在my_admin.py
from admin import Adminmy_admin = Admin('admin', 'admin')
my_admin.privileges.show_privileges()

五、Python标准库
Python标准库是一组Python自带的模块,可以方便用户的操作。

from collections import OrderedDictfavorite_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() + '.')

动手试一试:

# 9-13
"""
# 6-4的代码
types = {'int':'整数型','float':'浮点型','boolean':'布尔型','string':'字符串','char':'字节'}for key, value in types.items():print(key + ':' + value)types['print'] = '打印'
types['if'] = '条件检测'
types['for'] = '循环'
types['[]'] = '列表'
types['{}'] = '字典'for key, value in types.items():print(key + ':' + value)
"""
from collections import OrderedDicttypes = OrderedDict()types['int'] = '整数型'
types['float'] = '浮点型'
types['boolean'] = '布尔型'
types['string'] = '字符串'
types['char'] = '字节'for key, value in types.items():print(key + ':' + value)types['print'] = '打印'
types['if'] = '条件检测'
types['for'] = '循环'
types['[]'] = '列表'
types['{}'] = '字典'for key, value in types.items():print(key + ':' + value)
# 9-14
from random import randintclass Die():def __init__(self, sides=6):self.sides = sidesdef roll_die(self):print(randint(1, self.sides))count = 1
six_Die = Die()
while count <= 10:six_Die.roll_die()count += 1count = 1
ten_Die = Die(10)
while count <= 10:ten_Die.roll_die()count += 1count = 1
twenty_Die = Die(20)
while count<=10:twenty_Die.roll_die()count += 1

六、类编码风格

  1. 驼峰命名法:SixDie(不用下划线,每个单词首字母大写)
  2. 实例名和模块名都采用小写格式,单词与单词之间用下划线:six_die
  3. 每个类和模块要注释功能文档
  4. 在类中,使用一个空行来分隔方法;在模块中,使用两个空行来分隔类
  5. 导入模块时,先编写导入标准库的语句,然后用一个空行分隔,接着写导入自己编写的模块的语句。

【Python学习记录——从入门到放弃】八、类(下)相关推荐

  1. 【Python学习记录——从入门到放弃】一、变量和简单数据类型(上)

    本文使用的书籍是<Python编程:从入门到实践> 本文使用的是Python3.6 一.运行hello_world.py 这里主要是演示了一下print函数的使用,新手主要是在Python ...

  2. 蜗牛一步一步地往上爬的Python学习记录

    Python学习记录 前言 简介 基础知识 类型变量 高级特性 函数式编程 高阶函数 偏函数 装饰器decorator 匿名函数 前言 第一,绝对不断更: 第二,绝对认真写: 第三,绝对撰写的公正漂亮 ...

  3. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  4. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  5. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

  6. python学习记录——容器篇

    容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...

  7. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

  8. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

  9. Python学习记录:shapefile.Writer报错

    Python学习记录 shapefile.Writer报错 w=shapefile.Writer(r.shapeType)使用时报错 Exception: The target filepath 5 ...

最新文章

  1. 【OpenCV 4开发详解】图像腐蚀
  2. spring boot第八讲
  3. ​EMNLP 2021 | 以对比损失为微调目标,UMass提出更强大的短语表示模型
  4. 阿里巴巴集团 CTO 程立:今年天猫双 11,阿里练了什么?
  5. Spring与网关的集成
  6. 被360整的体无完肤,我真的怒了!
  7. SAP License:一个 SAP 新手的困惑
  8. 数据分析角度拆解可怕的庞氏骗局,究竟是怎么骗到人的?
  9. Coarse-Grained lock 粗粒度锁
  10. hr面试高频问题回答思路总结
  11. java 图片 pdf_Java 添加图片到PDF
  12. R语言---Seewave包和tuneR在声音分析中的应用①关于声音及简单分析
  13. 常用的Eclipse 快捷键
  14. hadoop SWAP交换空间
  15. Android之——模拟实现检测心率变化的应用实例
  16. [prometheus]Step6-prometheus使用钉钉告警
  17. Python OpenCV 横向平铺图像制作长图
  18. VS2008 新建网站时没有模板解决办法
  19. 雷尼绍测头TP200使用注意事项
  20. 免费文档翻译-免费批量文档翻译软件推荐

热门文章

  1. 软件测试之数据库面试题
  2. golang web学习随便记3-响应有关
  3. mysql用命令行导出数据库
  4. 铁客网络订票系统 铁客订票 12306
  5. 重装系统流程之联想小新Air14 2020锐龙版
  6. Mac M1安装iPhone/iPad APP应用程序
  7. Hadoop1.2.1 tasktracker容错机制分析,黑名单与灰名单
  8. uni-app教程入门视频资料
  9. 电脑硬盘如何重新分区 ?教你两招磁盘分区方法
  10. 小米5卡在android,【图片】小米5优化教程,吃鸡卡的进来!!!_小米5吧_百度贴吧...