Python语言入门学习系列——Python类
小标 2018-09-20 来源 : 阅读 1334 评论 0

摘要:本文主要向大家介绍了Python语言入门学习系列——Python类,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言入门学习系列——Python类,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

Python 类
  创建和使用类
Python中使用class关键字创建类,根据约定,类名首字母要大写。
示例,创建一个Dog类:
class Dog(object):
    """类的定义和使用"""
    def __init__(self,name,age):
        #初始化属性name和age
        self.name=name
        self.age=age

    def sit(self):
        print(self.name.title()+"执行sit命令")

    def roll_over(self):
        print(self.name.title()+"执行roll_over命令")
下面对上述示例中的代码以及注意事项做详细说明。
class关键字
#Python 3
class Dog():
#Python 2.7
class Dog(object):
声明类时,使用class关键字,类名按照约定首字母要大写,在Python2.7中创建类时,需要在括号中包含object;在Python3中创建类时,括号中可以不指定object。
__init__()方法
def __init__(self,name,age):
    #初始化属性name和age
    self.name=name
    self.age=age
__init__()是一个特殊的方法,类似于C#或java中的构造方法,当创建类的实例时,会自动被调用。该方法的名称中,开头和结尾包含两个下划线,这是Python中的一种约定,旨在避免Python默认方法与普通方法发生名称冲突。
在__init__()方法的参数中,形参self必不可少,还必须位于其他形参的前面。形参self不需要显示的传入实参值,Python在创建实例时,调用__init__()将自动传入实参self。并且不仅仅是__init__()方法,每个与类相关联的方法调用都自动传递实参self,它是一个指向实体本身的引用,让实例能够访问类中的属性和方法。
另外,还需要注意一点,和其他语言相比(比如C#或java),Python不需要显式的在方法体外声明类的属性,而是直接在__init__()方法中,使用self定义了属性和赋值操作(有点像Javascript中的对象的属性赋值操作),以self为前缀的变量可供类中的所有方法使用,也可以通过类的任何实例来访问这些变量属性。
实例化类和访问类成员
Python中实例化一个类,可以直接按照方法调用的形式实例化类,而不需要使用new关键字。
my_dog=Dog("旺财","3")
#访问类的属性
print(my_dog.age)
print(my_dog.name)
#调用类的成员方法
my_dog.sit()
my_dog.roll_over()
Python中使用句点表示法来访问类成员,即:实例名称.类成员。
给属性指定默认值
Python中的属性,不像其他语言在方法的外部声明和赋值,而是在__init__()方法中指定,因此给属性指定默认值,也需要在__init__()方法中进行。
class Car(object):
    """description of class"""
    def __init__(self,make,model,year):
        #初始化描述汽车的属性
        self.make=make
        self.model=model
        self.year=year
        #为odometer_reading指定默认值为0
        self.odometer_reading=0
由于Python并不是一个像C#或Java那种对面向对象有着严格要求的语言,Python相对来说更加的松散和灵活,它没有那么多的限制,(例如C#中的私有成员(private)),在Python中,可以对实例的所有属性进行读写操作,大量的直接对实例属性读写操作很容易导致混乱,因此在实际开发中,强烈建议,使用类中的方法去操作属性,而尽量避免直接使用实例名给属性赋值。
  继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的数学和方法。
子类的方法__init__()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。因此,需要在子类的__init__()方法中调用父类的__init__()方法,为此需要使用super()特殊函数。另外,还需要在子类定义时,指明要继承的父类。
class ElectricCar(Car):
    def __init__(self, make, model, year):
        super().__init__(make, model, year)
在Python中使用继承需要注意以下几点:

由于Python是一种解释型语言,类似于Javascript,因此在创建子类时,父类必须包含在当前文件中,且位于子类前面。在定义子类时,必须在括号内指定父类的名称。
为了实现父类和子类的关联,需要在子类的__init__()方法中使用super().__init__()语句,使子类包含父类的所有属性。

重写父类的方法
可以在子类中定义一个和父类方法同名的方法实现重写。Python将会忽略父类中的方法,只关注子类定义的同名方法。
补充
Python也可以像其它于语言一样,将一个类的对象作为另一个类的成员属性进行使用。
  导入类
Python允许将类存储在模块中,然后在主程序中导入所需的模块。
导入单个类
首先将单个类存储在单个模块(.py文件)中,类名和模块文件名不必保持一致,一般类名的首字母大写,但是模块名使用下划线连接各个词组并且全是小写。然后使用导入模块的语句导入单个类。
例如,Car类在car.py模块文件中,可以使用下述语句导入Car类:
from car import Car
#使用Car类
my_new_car=Car('audi','a4','2016')
在一个模块中存储多个类并导入
一个.py文件对应一个模块,可以根据需要在一个模块中定义多个类,注意:为了便于阅读,应该尽量包含该类的说明注释。接着,就可以使用下述语句导入该模块中需要使用到的一个类或多个类。导入多个类时,用逗号分隔各个类,之后就可以直接使用这些导入的类。
from car import Car,ElectricCar
导入整个模块
可以直接导入整个模块,然后使用句点表示法访问需要访问的类,模块名.类名
import car
my_beetle=car.Car('test','wy','12')
导入模块中所有的类(不推荐)
from module_name import *
需要从一个模块中导入很多类时,最好导入整个模块,并使用module_name.class_name的形式访问类。
在一个模块中导入另一个模块
可以在需要使用的模块中使用多条导入语句进行导入。例如:
from car import Car
from electric_car import ElectricCar
  类编码格式说明

类名采用驼峰命名法,即类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并且在单词之间使用下划线连接。
类在定义时,应在类定义后面包含一个文档字符串(使用"""包裹的字符串),用来描述类的功能。
在类中,可以使用一个空行来分割方法;在模块中,可以使用两个空行来分隔类。
需要同时导入标准库中的模块和自己编写的模块时,应该先编写导入标准库模块的import语句,再添加一个空行,然后编写导入自己模块的import语句。

以上就介绍了Python的相关知识,希望对Python有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程