Python:class类的简单介绍

来源:互联网 发布:java 在线视频技术 编辑:程序博客网 时间:2024/05/22 15:22

1.类与实例

类与实例互相关联,类是实例的对象,而实例是真正的实物,他存放了类中所定义的对象的具体信息
这里写图片描述
创建一个类

class MyNewObject(object):    class_suite

object是所有类之母,如果你的类没有继承任何其他的父类,object将作为默认的父类。它位于所有类继承结构的最上层。如果你没有继承直接或者间接子类化一个对象,那么我们就定义了一个经典类(不建议使用经典类)

class MyNewObject:    class_suite

实例化

先创建一个类class Myfirst(object):    pass#实例化这个类obj=Myfirst()#关于类作为名称空间容器>>> obj.x=4>>> obj.y=5>>> obj.y+obj.x9>>>"在这里实例名字obj将obj.x与obj.y关联起来,这就是我们所说的使用类作为名字空间容器。obj.x与obj.y是实例属性,并不是类Myfirst的属性,是obj实例对象的独有属性。"

2.方法

类的功能有一个更加通俗的名字叫做方法,在python中,方法定义在类定义中,但只能被实例所调用。

class MyClass(object):   #定义类    def printFoo(self):  #定义方法        print "You win" "对于seld参数,他在所有的方法声明中都存在,这个参数代表实例对象本身,当你用实例调用方法的时候,由解释器悄悄的传递给方法,你不需要自己传递self进来,因为他是自动传人的。在其他的语言中self被称为“this” 一般的方法会需要这个实例,而静态方法或者类方法就不需要,其中类方法需要的是类而不是实例"#实例化类,创建一个对象obj=MyClass()obj.printFoo()*******Output*******You win

3.创建一个类

class MyNewObject(object):    def __init__(self,name,phone):        self.name=name        self.phone=phone        print "Created instance for:",self.name    def updatePhone(self,newphone):        self.phone=newphone        print "update phone %s for %s"%(self.phone,self.name)#实例化obj=MyNewObject('cmustard',12345676)***********output************Created instance for: cmustard#方法调用更新obj.updatePhone(2345235235)***********output************update phone 2345235235 for cmustard#访问实例属性print obj.nameprint obj.phone***********output************cmustard2345235235

在这个类中定义了两个方法__init__和updatePhone.__init__()类似于类构造器,他在创建一个新的对象时被调用,在实例化的过程中,调用__init__()方法,当一个类被实例化时,就可以定义额外的行为,比如设定初始值等等。

4.创建和使用子类

class NewClass(MyNewObject):    def __init__(self,name,phone,id,email):        MyNewObject.__init__(self,name,phone)        self.id=id        self.email=email    def updateEmail(self,newEmail):        self.email=newEmail        print "Update e-mail address for ",self.name"我们创建了一个MyNewObject的一个子类,这个新的类,不仅继承了父类的updatePhone方法,还增加了updateEmail方法""注意,这里我们要显示传递self实例对象给基类构造器,因为我们不是在在实例中而是在一个子类实例中调用哪个方法。只是因为我们不是通过实例来调用它,这种未绑定的方法调用需要传递一个适当的实例(self)给他">>> cmustard=NewClass('cmustard','400-820-8820',3345,'cmustard@cmustard.com')Created instance for: cmustard>>> print cmustard<__main__.NewClass object at 0x00000000033D1E48>>>> cmustard.name='mustard'>>> cmustard.name'mustard'>>> cmustard.updatePhone('400-110-3345')update phone 400-110-3345 for mustard>>> cmustard.email'cmustard@cmustard.com'>>> cmustard.updateEmail('mustard@163.com')Update e-mail address for  mustard>>> cmustard.email'mustard@163.com'>>>>>> cmustard.id3345>>>

4.常用术语

1.抽象/实现
抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于描绘程序结构从而实现这种模型。

2.封装/接口

3.合成
合成扩充了对类的描述,是得对个不同的类合成为一个大的类,来解决现实问题,。合成描述了一个异常复杂的系统,比如一个类有其他类组成,更小的组件也有可能是其他类,数据属性及行为,所有这些合在一起,彼此是“有一个”的关系。

4.派生/继承/继承结构

5.泛华/特化
泛华表示所有子类与其父类及祖先类有一样的特点,所有子类可以认为同祖先类是“是一个”关系,因为一个派生对象是一个祖先类的例子。

6.多态
多态表明了动态(后来又称为运行时)绑定的存在,允许重载以及运行时类型确定和验证

0 0
原创粉丝点击