干货!Python入门基础之面向对象二:类和实例、方法

前面一片文章我介绍了python面向对象的基本知识,链接在此初步解释了面向对象和面向对象的优点,今天就开始正式用代码来展现面向对象。

1、利用class创建类

Python中,创建类的语句是如下所示

先解释一下,class后面跟的是类名,括号里面是基类(也成为父类)python3中默认继承object。里面的函数称为方法(注意,严格来说,python中,位于类里面的def语句才能被称为方法,而在类外面定义的def只能被称为函数)。示例如下

2、定义类的属性,

我们讲了类是有属性的,那么如何定义类的属性,有以下两种种:

1、 直接在类里面定义

这里属性是位于类的变量空间里面,整个类中可以直接访问

2、 在构造函数里面定义

这是对象的属性,访问时要通过self访问。

3、构造函数__init__

类是由属性构成的,当我们在定义一个类的时候,我们需要对类的属性进行设置,这时候就用到了构造函数:__init__(self,[……]),我们在构造函数中的参数是赋值给self,因为在oop中,self就是实例对象,name、age、weight变成了状态信息。

我们接上面说为什么它继承object,通过dir()我们可以打印出他的属性,发现他继承了很多方法,在后面的使用中会比较方便。(这里涉及到了新式类和老式类的问题,在python3中全都是新式类,新式类更加强大)。

4、访问控制

Python不像Java中有明确的访问控制方法,说白了就是没有访问控制。不过有一套约定俗成的方法:全靠自觉

变量名前面无下划线,可以公开访问

变量名前面带有一个下划线:类的私有属性

变量名前面带有两个下划线:部分私有属性,类里面可以访问,实例化之后不能直接访问。

再说一遍:全靠自觉!其实它们无论怎样都是可以访问的。这样只是代码规范,方便以后的代码维护。

5、定义类的方法

函数和方法的区别:前面我讲过,python在类中的def才能被称为方法,因为函数和方法的区别就是它们是否依附于一个类。

函数直接通过函数名调用,方法通过类实例化调用,方法是类的一个属性。

方法的访问控制和类的属性一样,也是没有,定义方法也就差不多,如下:

绑定方法:

你们可能注意到了,每个方法中 都有self,这个self是绑定类的,表示函数是类的属性。

self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self(你可能已经注意到了这点),但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。

方法装饰器:

@classmenthod类方法,调用的时候用类名,不是先生成对象,由对象调用

@property像访问属性一样调用方法,就是指不用加括号了。

如下:我在上面的那个类里面加了两个方法,用了这两个修饰器。

使用方法如下:

下一篇介绍类的继承、运算符重载(钩子)等。欢迎关注。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322A1MJ8000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券