前言

今天我们要说的是面向对象的核心-----类 ,类能帮我们把复杂的事情变得有条理,有顺序,希望大家通过学习类能改善自己的编码风格 ,使代码变得更为好看 ,更加通俗易懂 。

 

1.类的用法

一、什么是类

类(class),作为代码的父亲,可以说它包裹了很多有趣的函数和方法以及变量 ,下面我们试着简单创建一个吧。

这样就算创建了我们的第一个类了。大家可以看到这里面有一个self,其实它指的就是类aa的实例 。每个类中的函数只要你不是类函数或者静态函数你都得加上这个self,当然你也可以用其他的代替这个self ,只不过这是python中的写法,就好比Java 中的this 。

 

二 、类的方法

1.静态方法,类方法 ,普通方法

类一般常用有三种方法,即为static method(静态方法),class method(类方法)和self(普通方法)。下面我们来看看他们之间的区别吧。

从这里可以看出我们的三种方法有一个共同点 ,那就是既可以在实例中访问,也可以直接用类访问 。不同的是,类实例访问时是不会执行init方法的 ,也就是没有进行初始化。如果用类直接访问 ,可以清楚看到它的运行轨迹。如果想在一个方法里调用其他方法则只需:实例名.方法名 或者 类名.方法名 即可 。

 

2.安全方法,私有方法,安全变量 ,私有变量

安全方法一般是为了保护类的安全性,为了限制访问权限而设立的。一般只需在方法前加单下划线即可,那么私有方法怎么访问呢?和其他方法访问方法一样。

安全方法:可以在外部进行调用并且其他方法也能访问到 ,它允许本身的任何方法进行访问,并可在外部调用,安全属性也是;

私有方法:只能在私有方法内部调用 ,不能通过类名或者类的实例名来调用,所以你可以在其他方法中通过self.ww来调用或者cls.ww来调用,这样就做到了私有的功能 。

 

三、类的特性

类的特性 ,相信接触过面向对象的小伙伴应该都知道,封装、继承和多态。

1.封装

讲的就是将一个功能封装到类中,这个很好理解。

 

2.继承

就是一个类和另一个类的主体结构一致 ,就好比父亲和儿子的区别 ,儿子继承父亲所有的特点,这使得他可以少做一些重复劳动,并且他还有自己的一套 ,这就叫继承,下面我们通过实例说明:

可以看出我们实现了继承,就是简单的在子类中添加了父类的名字 ,并且写了个spuer,用来继承父类的所有的特性 。虽然父类的所有东西我们都能继承,但并不是说所有的你都能用的 ,比如说父类的私有方法或者私有属性:

那么如果你想要使用它们那该怎么办呢?很简单,你只需将私有方法或者属性添加到父类某个可以公开访问的类中,然后子类就能使用这些父类定义的私有方法或者属性了。

当然 ,除了单一继承,还有多继承,它可以继承两个类的所有属性和方法 ,只不过写法与其他编程语言有点不同 ,它的多继承就是递归继承,不能同时继承,也就是:

这样就实现了多继承 ,多继承可以大大简化代码量。我们可以通过一些魔法方法来获得父类的名称以及说明 。

  •  
  •  
  •  
__bases__  #查看类的所有父类__base__  #查看类的父类__doc__    #查看类的使用文档,在类中以三引号扩起来的部分都是文档内容

我们注意到,只需继承一个类就实现了多继承 ,这是因为son类之前继承过father类,所以现在你必须通过son类继承father类,后面给它初始化 ,如果是两个没有任何关联的类,则需要写两个类名进去,并且初始化 。

 

3.多态

多态的应用使得类更灵活 ,它可以共享某个方法,给所有的类对象使用。我们来看看:

这里是通过对一个函数传一个对象,使得它拥有了类的特征功能 ,这也就是鸭子类型。

 

4.动态修改值

当一个类需要大量创建实例时 ,可以通过魔法方法slots来声明 。这样可以减少内存消耗。但是它只是动态的修改,并没有绑定到类的实例中,而且类只能访问slots里设定的值。

可以看到访问不了值 ,因为没有这个属性,我们再来看看没slots的时候:

现在正常了,另外 ,子类的slots为它本身和父类的slots,父类只是本身 。这样极大省内存,但是这样好像还不够Python ,因为他的局限性,让我决定使用property。property有两种创建方式,我们来看看:

一 、装饰器

直接在方法上运用装饰器 ,十分方便。他有设置,获取,删除三个属性 ,例如:

可以看到 ,非常简单就实现了功能,少写了很多代码哦 。

二 、在类中定义值为property对象的类属性

使用property函数来实现:

可以看到,这样就实现 ,那么现在我们写一个稍微复杂点的,可以进行交互的动态修改属性吧。

可以看到,我输入属性名和属性值 ,如果你想做的更好,可以给它加其他功能,比如私有方法私有属性 ,访问其他类。总之功能多多,需要你自己动手亲自实践 。

 

四、总结

通过对类的解读,让大家明白了 ,代码的简洁美观有多重要,为了我们的程序不那么low,请学好类。

 文章到这里就结束了 ,感谢你的观看

说实在的 ,每次在后台看到一些读者的回应都觉得很欣慰,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者 ,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫 、web开发、大数据分析方面的视频(适合小白学习)

⑤    Python所有知识点汇总(可以弄清楚Python的所有方向和技术)

*如果你用得到的话可以直接拿走,在我的QQ技术交流群里,可以自助拿走 ,群号是421592457 。*

本文版权归去快排Seo www.SEOgurublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▷61910465