# Python 学习从入门到放弃(四)--类和模块的基础知识

Python 学习从入门到放弃(四)–类和模块的基础知识

一个最简单的类的定义可能是类似这样的

class 类名:

    def 方法名1(self, 参数...)
        方法体
    ...
    属性名 = 初始值
    ...

而创建一个该类的对象则可以使用

对象名 = 类名()

其中的 self 指代对象自己,需要调用对象方法时,可以使用

对象名.方法名(参数...)

构造函数与解构函数

和 C 语言中的构造和解构函数类似,当我们创建某个类的对象的时候,可以增加更多参数。

# 构造函数
def __init__(self, 参数...)
    构造函数体

# 解构函数
def __del__(self, 参数...)
    解构函数体

例如

# 类的定义
class goods:

    name = ''
    price = 0

    def __init__(self, name, price):
        self.name = name
        self.price = price

    def __del__(self):
        print('delete the goods')

# 使用构造函数创建一个对象
pen = goods('pen', 5.9)
# 使用解构函数删除这个对象
del(pen)

方法和属性

例如

class goods:

    name = ''
    price = 0
    inventory = 0

    def __init__(self, name, price, inventory):
        self.name = name
        self.price = price
        self.inventory = inventory

    def __del__(self):
        print('delete the goods')

    def sell(self, numbers):
        remained = self.inventory - numbers
        if remained > 0:
            self.inventory = remained
            return self.price * intnumbers
        else: # 库存不够
            print('库存不足')

# 创建库存
pen = goods('pen', 5.9, 100)
# 卖了50支pen
pen.sell(50) # 返回295.0,库存inventory变成了50
print(pen.inventory) # 得到结果50

其中 name、price、inventory 都是这个类的属性,通过 对象名.属性名 的方式调用
而sell()就是这个类的一个方法,通过 对象名.方法名(参数) 的方式来调用

继承

基本语法

class 类名(父类, ...):
    类定义体

例如

class freshCommodities(goods):

    productionDate = '' # 生产日期

    def __init__(self, name, price, inventory, productionDate):
        super(freshCommodities, self).__init__(name, price, inventory) # 调用父类的构造函数
        self.productionDate = productionDate

    def sell(self, numbers):
        if self.productionDate > '20171102': # 举个例子,当然也可以使用 Python 的 date 相关库来判断时间
            return goods.sell(self, numbers) # 这里直接使用了父类的名称来调用父类的方法,而原函数中的参数 self 在这里被替换成实参 self 指代自己
        else:
            print('商品已过期,不能销售')

fish = freshCommodities('fish', 10, 100, '20171103')
fish.sell(50)

模块基础

跟 C 语言的库、Java 的模块概念类似。
基本语法:


import 模块名
import 模块名 as 别名 # 在使用时通过别名来调用

from 模块名 import 子模块名
from 模块名 import * # 导入所有子包

调用时,使用方法会根据import语法的不同有所不同。
例如 Python 提供了一个 re 的模块,用于处理正则表达式,其中有一个函数sub(需要查找的内容, 替换成的内容, 源字符串),我们以此为例进行说明

import re
re.sub('p', 'P', 'Hello Python') # 加上模块名来调用

import re as reg
reg.sub('p', 'P', 'Hello Python') # 使用别名调用

from re import *
sub('p', 'P', 'Hello Python') # 直接调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值