学习Python中类及C++类的对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Python中类及C++类的对比相关的知识,希望对你有一定的参考价值。

Python是一种面向对象、解释性语言,所以在Python开发(http://www.maiziedu.com/course/python-px/里包含有类,因为面向对象语言都有类。今天就简单分享一下Python中类,重点是与C++中的类进行对比。

C++中的父类,Python中叫超类(superclass)

创建类

class Person:

 

 def setName(self, name):

   self.name = name

 

 def getName(self):

   return self.name

 

 def greet(self):

   print "Hello, world! I’m %s. " % self.name

C++this关键字,Python中叫self 
似乎self关键字更加形象。

将特性绑定到一个普通函数

>>>class Class:

     def method(self):

       print ’I have a self!’

 

>>>def function():

     print "I don’t..."

 

>>>instance = Class()

>>>instance.method()

I have a self!

 

>>>instance.method = function

>>>instance.method()

I don’t...

私有 
Python中没有private关键字,不论变方法还是特性,在名字前面加上双下划线即可:

class Secretive:

  def __inaccessible(self):

    print ’Bet you can’t see me...’

指定超类 
即我们C++中的父类、继承。这里不是使用的冒号,而是把超类写在子类后面的括号中:

class Filter:

  def init(self):

    self.blocked = []

class SPAMFilter(Filter):

  def init(self):

    self.blocked = [’SPAM’]

检查继承 
据我所知,在C++中没有直接方法判断两个类是否存在父子关系。 
Python中有内建方法,issubclass函数:

>>>issubclass(SPAMFilter, Filter)true

 

>>>issubclass(Filter, SPAMFilter)false

唯一需要注意的是,第一个参数是子类,第二个参数是超类。

检查一个对象是否是一个类的实例 
isinstance方法,第一个参数是实例,第二个参数是类名

多个超类 
也就是我们C++中所说的多重继承,即才括号里写几个类,中间用逗号隔开。

 

以上是关于学习Python中类及C++类的对比的主要内容,如果未能解决你的问题,请参考以下文章

python中类的学习笔记(源码版)

Python中类的方法属性与方法属性的动态绑定

python中类的魔术方法

仅打印Python中类的名称[重复]

es6中的类及es5类的实现

几种机器学习框架的对比和选择