zoukankan      html  css  js  c++  java
  • [Dynamic Language] Python: 类基本结构和继承

    代码
    #! /usr/bin/env python
    2 # _*_ coding:utf-8 _*_
    3
    4 class Base1:
    5
    6 #私有类型成员(这只是一种规则,并不是从编译器上面限制的,
         #我们依然可以用特殊语法调用这些私有成员:
         #类型名称+.+_类型名称+字段名称 如:Base1._Base1__i)

    7 __i = 123
    8
    9 a = 123 #Class Field
    10
    11 #初始化函数
    12 def __init__(self):
    13 self.b = 321 #Instance Field
    14 self.x = ["a","b","e","e","n"]
    15 self.test()
    16 print "Base1 init ..."
    17
    18 def test(self):
    19 print "Base1 test ..."
    20
    21 #加"__"私有成员(特殊方法调用: Base1()._Base1__name())
    22 def __name(self):
    23 print "pirvatedata..."
    24
    25 #静态方法
    26 @staticmethod
    27 def staticMethod():
    28 print "staticMethod..."
    29
    30 #属性
    31 def getI(self): return self.__b
    32 def setI(self, value): self.__b = value
    33 def delI(self): del self.__b
    34 I = property(getI, setI, delI, "property I")
    35
    36 #只读属性
    37 @property
    38 def I(self):
    39 return self.__i
    40
    41 #实际索引器功能
    42 def __getitem__(self, key):
    43 return self.x[key]
    44 def __setitem__(self, key, value):
    45 self.x[key] = value
    46
    47
    48 def myTest():
    49 try:
    50 print "mytest..."
    51 except RuntimeError, e:
    52 print "[RuntimeError]", e
    53 except Exception, e:
    54 print "[Error]", e
    55 finally:
    56 print "finally"
    57
    58
    59 #析构函数
    60 def __del__(self):
    61 pass
     

    代码
    #-------------------------------------------------------
    63 class Base2:
    64 def __init__(self):
    65 print "Base2 init ..."
    66
    67 def test(self):
    68 print "Base2 test ..."
    69
    70 #-------------------------------------------------------
    71 class Class1(Base1, Base2):
    72 def __init__(self):
    73 #基类__init__/__del__需要显示调用
    74 Base1.__init__(self)
    75 Base2.__init__(self)
    76 print "Class1 init ..."
    77
    78 #-------------------------------------------------------
    79 if __name__ == "__main__":
    80 a = Class1()
    81 #继承方法的调用和基类声明顺序有关
    82 a.test()

  • 相关阅读:
    [C++] 习题 2.18 倒序查找字串
    [C++] 二叉树计算文件单词数
    [C++] 例题 2.7.1 用栈实现简易计算器
    [C++] 非递归实现前中后序遍历二叉树
    [C++] 习题 2.15 实现简单环形队列
    数据结构、算法及应用
    [C++] 习题 2.14 用队列实现桶排序
    svn add 所有文件的命令
    解决Error opening terminal: xterm.的错误
    linux下删除项目中所有.svn的命令
  • 原文地址:https://www.cnblogs.com/abeen/p/1784769.html
Copyright © 2011-2022 走看看