写个“类”就是这么 so easy

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013486414/article/details/84818462

写在之前

在昨天的文章中(零基础学习 Python 之初识“类”)我们学习了类的基本概念,并用伪代码简单的了解了类的基本的写法和形式,从现在开始我们不用伪代码了,开始用真正的 Python 代码来了解类。

Python 是个不断发展的语言,于是有了 Python2 和 Python3 两个版本,在 Python2 中,类分为 “新式类” 和 “旧式类”,但是在 Python3 中没有这种新旧之分,就只是 “类” 而已,当然我们的用的版本还是 Python3。

创建一个 “类”

如何创建一个 “类”,为了更普遍性的说明,我来写一个具有通常类的结构的类,请看下面的例子:

class Person:
   """
   具有通常类的结构的 Person 类
   """
   def __init__(self,name):
       self.name = name

   def get_name(self):
       return self.name

   def get_sex(self,sex):
       per_sex = {}
       per_sex[self.name] = sex
       return per_sex

上面的 Person 类是一个很常见的类,下面我来对它就行逐一解释:

在 Python3 中所有的类都是 object 的子类,正是因为这个原因,所以不用像 Python2 中那样要把对 object 的继承写出来。

class Person:这是在声明创建一个名字是 “Person” 的类,关键词是 class,就和函数的 def 一样。类的名字按照惯例一般用大写字母开头,如果名字是两个单词,那么两个单词的首字母都要大写,比如 HotDog,当然了如果你不想这样也是可以的,但是我希望你记住 “你的代码是给别人看的”,不要给别人和自己以后读代码的时候带来麻烦。最后当所有的一切都结束的时候,别忘了在最后带上冒号。

接下来就是类里面的代码块,上面例子中类里的代码块看起来很熟悉,都是 def 这个关键词开头的函数。你是对的,它们就是函数,但是你仔细看一下就会发现,这些函数跟我们在前面学过的函数略微不同,它们的参数都有 “self”(要注意 self 是默认的第一个参数)。这个正是类中函数的特色,是为了跟我们以前学过的函数区别开来,所以一般在类里的函数我们不叫它们函数,而叫它们 “方法”。所以当你听到有人说 “方法” 的时候,不用奇怪,它和函数在本质上是一样的。

下面对类里的几个函数做一个简要的介绍。

def init(self,name):这是一个特殊的方法,以双下划线开头和结尾,这样的方法其实在类里面还有很多,统一叫它们 “特殊方法”。对于 init() 还有一个别的名字,叫 “构造函数”,也有叫它是 “初始化方法” 的,个人认为第二个更好一点,因为单从字面上来看,它对应的含义应该是初始化。所谓的初始化,就是让类有一个基本的样子,而不是里面什么也没有,很多事情都要初始化,让事情有一个具体的起点状态,比如你要吃饭,碗里得先有饭。在用类创建实例的时候,首先执行的是初始化方法。

在上面的例子中,初始化方法里的参数除了 self 以外,还有一个 name,在 Person 类被实例化的同时,要传给它一个值。self.name = name 的意思是建立实例的一个属性,这个属性的名字也是 name,它的值等于参数 name 所传入的值。要注意的是,这里的属性 self.name 和参数 name 是纯属巧合,你也可以写成 self.aaa = name,只不过这样写会觉得很别扭。

接下来的 def get_name(self) 和 def get_sex(self,sex) 是类里面的另外两个方法,这两个方法除了第一个参数必须是 self 以外,其它跟函数没有什么区别。你只需要注意的是,两个方法中都用到了 self.name,属性的这种调用方式只能在类里面使用。

“类” 的实例

类是对象的定义,实例才是真实的东西。比如 “人” 是一个类,但是 “人” 终究不是具体的某个会喘气的,只有 “rocky” 才是具体的东西,但他是具有 “人” 这个类所定义的属性和方法。“rocky” 就是 “人” 这个类的实例。

我们继续用上面那个类的例子,直接写一下调用这个类的代码:

if __name__ == "__main__":
   boy = Person('rocky')
   print(boy.name)
   name = boy.get_name()
   print(name)
   his_sex = boy.get_sex('男')
   print(his_sex)

上面代码中 girl = Person(‘rocky’) 是利用上面的类创建的实例。创建实例的过程就是调用类 Person(),首先执行的是初始化函数,上述例子中的初始化函数有两个参数,即 self 和 name,其中 self 是默认参数,不需要传值,name 则需要给它传值,所以用Person(‘rocky’) 的样式。

boy 就是一个实例,它有属性和方法,self.name 是它的属性,boy.get_name() 和 boy.get_sex(‘男’) 是通过实例来调用方法。

刚才是以 boy = Person(‘rocky’) 的方式创建了一个实例,仿照这个样式还可以建立更多的实例,比如 girl = Person(‘xishi’) 等,也就是说,一个类可以创建多个实例。

写在最后

这就是通过类创建实例,并且通过实例来调用属性和方法的过程,我感觉我已经说的很详细了,希望你能认真的看完。

更多内容,欢迎关注公众号「Python空间」,期待和你的交流。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013486414/article/details/84818462