Python抽象之类

来源:互联网 发布:克林战斗力官方数据 编辑:程序博客网 时间:2024/06/06 15:00

类的定义

Python是面向对象程序设计语言。将多个对象提取相同特征,向上抽取,就得到了类。在类中可以定义类的特性和方法。

创建类

>>> __mataclass__ = type                            #确定使用新式类>>> class Person:def setName(self,name):self.name = namedef getName(self):return self.namedef greet(self):print "Hello ,world! I'm %s." % self.name>>> 
class语句会在函数定义的地方创建自己的命名空间。其中,self参数是对于对象自身的引用。
>>> p1 = Person()>>> p2 = Person()>>> p1.setName('Tom')>>> p2.setName('Ami')>>> p1.greet()Hello,world! I'm Tom.>>> p2.greet()Hello,world! I'm Ami.

特性、函数和方法

self参数事实上正是方法和函数的区别。方法(刚专业一点可以成为绑定方法)将他们的第一个参数绑定到所属的实例上,因此不需显示提供该参数。
特性可以理解为在类中定义的变量。

私有化

Python并没有真正的私有化支持。若要实现隐藏特性或者方法,使该特性和方法不可以在类外部直接调用。可以在定义特性和方法时在名字前加上双下划线。
>>> class Secretive:def __inaccessible(self):print "Bet you can't see me..."def accessible(self):print "The secret message is:"self.__inaccessible()>>> s = Secretive()                    >>> s.__inaccessible()                            #__inaccessible从外界是无法访问的,而在类内部是可以的Traceback (most recent call last):  File "<pyshell#22>", line 1, in <module>    s.__inaccessible()AttributeError: Secretive instance has no attribute '__inaccessible'>>> s.accessible()The secret message is:Bet you can't see me...>>> 
但是Python并没有真正的私有化支持,在类的内部定义中,所有以双下划线开始的名字都被”翻译“成前面加上单下划线和类名的形式。
>>> s._Secretive__inaccessible()Bet you can't see me...>>> 
如果不需要使用这种方法但是又想其他对象不要访问内部数据,那么可以使用单下划线。

类的命名空间

面向对象三大特性

封装

封装可以使类只对外提供一些功能接口,而不用提供实现功能的细节。这对程序的安全和使用都是有很大影响的。

多态

多态意味着可以对不同类的对象使用同样的操作。

继承

以通用的类为基础建立专门的类对象。
0 0
原创粉丝点击