前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写个“类”就是这么 so easy

写个“类”就是这么 so easy

作者头像
编程文青李狗蛋
发布2019-11-07 15:38:04
2780
发布2019-11-07 15:38:04
举报
文章被收录于专栏:编程文青李狗蛋
写在之前

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

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

创建一个 “类”

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

代码语言:javascript
复制
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” 就是 “人” 这个类的实例。

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

代码语言:javascript
复制
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') 等,也就是说,一个类可以创建多个实例。

写在最后

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

看完之后相信你会有一个基本的或者稍微模糊的认识,在之后的文章里我会继续深入到一些细节的部分,为你之后的学习打一个相对牢靠的基础。

如果你觉得这篇文章学到了什么,希望你能点个赞或者转发都可以,就当是对原创作者的支持,万分感谢。

The end。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python空间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档