Python入门笔记:类

类的定义与声明

class那行后面一定要跟:
类的定义里面,属性的引用一定要加self.
__init__(self)是默认的类初始化方法,一定要用,实例化时自动调用。
类方法的第一个参数一般为self

class Dog():
    """一次模拟小狗的简单尝试"""

    def __init__(self, name, age):
        """初始化属性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.name = 'haha'
print(my_dog.name.title() + ' is my dog and ' + str(my_dog.age) + ' years old.')
my_dog.roll_over()

这里写图片描述

class Car():
    """一次模拟汽车的简单尝试"""

    def __init__(self, make, model, year, odometer=0):  #给属性指定默认值
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer = odometer

    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

    def read_odometer(self):
        """打印一条指出汽车里程的信息"""
        print("This car has " + str(self.odometer) + " miles on it.")

    def update_odometer(self, mileage):
        """
        将里程表读数设置为指定的值
        禁止将里程表读数往回调
        """
        if mileage >= self.odometer:
            self.odometer = mileage
        else:
            print("You can't roll back an odometer!")

my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
my_new_car.odometer = 23    #直接修改属性的值
my_new_car.read_odometer()
my_new_car.update_odometer(110) #通过方法修改属性的值
my_new_car.read_odometer()

这里写图片描述

继承

创建子类时,父类必须包含在当前文件中,且位于子类前面。
super()是一个特殊函数,将父类和子类关联起来。
class 子类名(父类名):

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.')

    def get_range(self):
        """打印一条消息,指出电瓶的续航里程"""
        if self.battery_size == 70:
            range = 240
        elif self.battery_size == 85:
            range = 270
        message = "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_size = 70
        self.battery = Battery()    #将示例用作属性

#   def describe_battery(self):
#       """打印一条描述电瓶容量的消息"""
#       print("This car has a " + str(self.battery_size) + '-kWh battery.')

    def update_odometer(self):  #重写父类方法
        """里程归零"""
        self.odometer = 0

my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
#my_tesla.describe_battery()
my_tesla.battery.describe_battery()
my_tesla.odometer = 100
my_tesla.read_odometer()    #调用父类方法
my_tesla.update_odometer()
my_tesla.read_odometer()
my_tesla.battery.get_range()
my_tesla.battery.battery_size = 85  #修改属性示例的属性
my_tesla.battery.get_range()

这里写图片描述

从模块中导入类

从模块中导入类和从模块中导入函数类似,参见Python入门笔记:函数
from module_name import class_name1, class_name2, ...
example_name = class_name()

import module_name
example_name = module_name.class_name()

类名采用驼峰命名法
示例名和模块名都采用小写格式,并在单词之间加下划线。

标准库

标准库是一组模块,安装的Python都包含。
标准库说明资源:
Python3 标准库概览
Python 3 Module of the Week
The Python Standard Library

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 languages is " + language.title() + ".")

这里写图片描述

如果觉得此文章有用,点击这里,万分感谢。
这里写图片描述

Reference

[美]Eric Matthes著,袁国忠译. Python编程从入门到实践[M]. 北京:人民邮电出版社. 2016.7.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值