zoukankan      html  css  js  c++  java
  • python类的简单介绍

      类是面向对象编程的核心, 它扮演相关数据及逻辑的容器角色。它们提供了创建“真实”对象(也就是实例)的蓝图。因为Python 并不强求你以面向对象的方式编程(与Java 不同), 此刻你也可以不学习类。 不过我们还是在这儿放了些例子, 以方便感兴趣的读者浏览。

    如何定义类

    1 class ClassName(base_class[es]):
    2 "optional documentation string"
    3 static_member_declarations
    4 method_declarations

          使用 class 关键字定义类。 可以提供一个可选的父类或者说基类; 如果没有合适的基类,那就使用 object 作为基类。class 行之后是可选的文档字符串, 静态成员定义, 及方法定义。

     1 class FooClass(object):
     2 """my very first class: FooClass"""
     3 version = 0.1 # class (data) attribute
     4 def __init__(self, nm='John Doe'):
     5 """constructor"""
     6 self.name = nm # class instance (data) attribute
     7 print 'Created a class instance for', nm
     8 def showname(self):
     9 """display instance attribute and class name"""
    10 print 'Your name is', self.name
    11 print 'My name is', self.__class__.__name__
    12 def showver(self):
    13 """display class(static) attribute"""
    14 print self.version # references FooClass.version
    15 def addMe2Me(self, x): # does not use 'self'
    16 """apply + operation to argument"""
    17 return x + x


      在上面这个类中, 我们定义了一个静态变量 version, 它将被所有实例及四个方法共享,__init__(), showname(), showver(), 及熟悉的 addMe2Me(). 这些 show*()方法并没有做什么有用的事情, 仅仅输出对应的信息。 __init__() 方法有一个特殊名字, 所有名字开始和结束都有两个下划线的方法都是特殊方法。当一个类实例被创建时, __init__() 方法会自动执行, 在类实例创建完毕后执行, 类似构建函数。__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数, 它并不创建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初始化工作。通过创建自己的 __init__() 方法, 你可以覆盖默认的 __init__()方法(默认的方法什么也不做),从而能够修饰刚刚创建的对象。在这个例子里, 我们初始化了一个名为 name的类实例属性(或者说成员)。这个变量仅在类实例中存在, 它并不是实际类本身的一部分。__init__()需要一个默认的参数, 前一节中曾经介绍过。毫无疑问,你也注意到每个方法都有的一个参数, self.
       什么是 self ? 它是类实例自身的引用。其他语言通常使用一个名为 this 的标识符。

    如何创建类实例

    >>> foo1 = FooClass()
    Created a class instance for John Doe

      屏幕上显示的字符串正是自动调用 __init__() 方法的结果。当一个实例被创建,__init__()就会被自动调用。不管这个__int__()是自定义的还是默认的。创建一个类实例就像调用一个函数, 它们确实拥有一样的语法。它们都是可调用对象。类实例使用同样的函数运算符调用一个函数或方法。既然我们成功创建了第一个类实例, 那现在来进行一些方法调用:

    1 >>> foo1.showname() Your name is John Doe
    2 My name is __main__.FooClass
    3 >>>
    4 >>> foo1.showver()
    5 0.1
    6 >>> print foo1.addMe2Me(5)
    7 10
    8 >>> print foo1.addMe2Me('xyz')
    9 xyzxyz

        每个方法的调用都返回我们期望的结果。比较有趣的数据是类名字。在showname()方法中,我们显示 self.__class__.__name__ 变量的值。对一个实例来说, 这个变量表示实例化它的类的名字。(self.__class__引用实际的类)。在我们的例子里, 创建类实例时我们并未传递名字参数, 因此默认参数 'John Doe' 就被自动使用。在我们下一个例子里, 我们将指定一个参数。

    >>> foo2 = FooClass('Jane Smith') Created a class instance for Jane Smith
    >>> foo2.showname()
    Your name is Jane Smith
    My name is FooClass
  • 相关阅读:
    avuex
    vue与avuex
    前端上班第十天
    echarts使用心得
    json转化技巧
    前端上班第一天
    声明函数的提升,声明变量与声明函数之间的区别有什么
    王屋山黑加仑
    微信小程序1
    js-基础
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/5670184.html
Copyright © 2011-2022 走看看