python基础篇-启动篇(三)

本文介绍Python模块和包的概念及导入方法,如用import导入模块,from...import导入函数,还提及兼容性处理和__future__引用新特性。同时阐述面向对象编程,包括类与实例属性、类方法定义、多态、多重继承,以及getattr()和setattr()函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、模块和包

概念:模块是一个.py文件;包是文件夹,每个文件夹中都会有一个__init__.py文件来确定这是一个包

导入模块使用import 模块, 例如 import math;如果只需要导入某些函数则使用 from 模块 import 函数,例如from math import pow, sin

当两个不同模块都提供相同功能,而不确定哪个模块存在,考虑到兼容性可使用try except。try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句

try:
    import json   #尝试导入json模块
except ImportError:
    import simplejson as json 不存在json则导入simpeljson并重命名为json

当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。老版本已有此功能,而新版本对此增加新的特性,则选择使用__future__来引用新特性,例如

from __future__ import division引入新的除法特性

2、面向对象编程

类是模板,而实例则是根据类创建的对象。

绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

如果类属性和实例属性名字冲突了,实例属性优先级高,它将屏蔽掉对类属性的访问

定义类方法:通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls。因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用

函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型

多态:

方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用

如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr()  setattr( )函数。

 s = Student('Bob', 'Male', 88)
getattr(s, 'name')  # 获取name属性'Bob'   getattr不存在属性会报错
getattr(s, 'age', 20) #getattr不存在属性时返回默认值防止报错
setattr(s, 'name', 'Adam')  # 设置新的name属性

 

class Person(object):

    def __init__(self, name, gender, **kw):
        self.name = name
        self.gender = gender
        for k,v in kw.iteritems():#通过interitems返回key value形式的不可改变的tuple
            setattr(self, k , v)

p = Person('Bob', 'Male', age=18, course='Python')
print p.age
print p.course

可以为任意额外的关键字参数,并绑定到实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值