接下来,我们区分两个关键词“类”和“类的实例”。类确定了结构,但是并不填充内容。比如,表示车的类,指明每辆车需要存三个信息:品牌、型号、和出厂时间,但是并没有说出具体的车的品牌、型号或者出厂时间。
而类的实例是一个特殊的类:指明了各种属性对应的具体信息,比如,我创建了一辆车,品牌是奥迪,型号是Q7,出厂时间是2017。为了更好的理解和区分“类”和“类的实例”,我们打个比方,大家都填过个人信息登记表,每个人都必须填入与表格相对应的信息,比如姓名,性别,年龄等等,但是具体填写的内容因人而异。
类就相当于这个空白的登记表,上面指定了要填写的内容。而你填写完之后的表,就相当于一个类的实例,上面记载着与你个人相关的信息。这个根据类来创建实例的过程叫做“实例化”。
好了,现在我们看一下Python中真实的类(图一car.py)。第一个单词class表示我们在创建一个类。第二个单词Car是类的名字,后面跟一对圆括号,通常来说,默认类名首字母大写。类中的变量称为属性,类中的函数称为方法。
__init__()是一个特殊的初始化函数,创建Car实例时,自动调用该方法,虽未显示地包含return语句,但Python自动返回一个表示这辆车的实例,比如,my_car = Car(‘Audi’, ‘Q7’, ‘2017’) 会把Audi赋给self.make, 把Q7赋给self.model,把2017赋给self.year,并返回一个实例my_car。以self为前缀的变量可供该类中的所有方法使用,比如,在get_descriptive_name()中,可以调用self.make,self.model, self.year。
可以把self理解为一个类的实例,更确切的说,是一个指向实例本身的引用,让实例能够访问类中的属性和方法。还记得之前关于人员登记表的比喻吗?每个实例具有相同的字段结构,但是每个字段里填写的信息不同,这就是为什么写self.make = make,而不是写Car.make = make。
你可能会注意到类中的每个方法的第一个形参都是关键字self,self是必不可少的,而且必须位于首,但是,当我们调用这些方法时候(e.g. my_car = Car(‘Audi’, ‘Q7’, ‘2017’)),只需要传递三个值,为什么略过self这个参数呢?
这是Python中特有的行为:当我们调用一个实例的方法时,Python会自动搞清楚要用哪一个实例,并把它传递到self参数中。我们在接下来介绍如何使用类中的方法时,再给大家具体解释。
图一 car.py
如何使用类?
Python中使用点号访问对象的属性和方法:my_car.year,my_car.get_descriptive_name(),
见图二my_car.py代码中第7-8行。
回到上一个问题,图一中第9行代码定义get_descriptive_name(self)时参数self必不可少,为什么图二第8行代码调用该方法时,省略了实参self?
正是因为我们在调用get_descriptive_name()时用点号指明了实例my_car,Python才能自动识别实例my_car,并创建my_car的引用,并把这个引用传给参数self。如果不通过实例调用方法,我们应该这么写:Car. get_descriptive_name(my_car),此时,明确把my_car当做实参传给参数self,见图二代码第9行。
图二 my_car.py
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!