Python基础--类


面向对象语言都有类。

今天就简单分享一下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++中所说的多重继承,即才括号里写几个类,中间用逗号隔开。

评论关闭