zoukankan      html  css  js  c++  java
  • python class 2

    //test.py

    1 class Employee:

      2         'all employee'

      3         empCount = 0

      4         def __init__(self, name, salary):

      5                 self.name = name

      6                 self.salary = salary

      7                 Employee.empCount += 1

      8         def prt(self):

      9                 print 'self ', self

     10                 print '__class__', self.__class__

     11         def displayCount(self):

     12                 print 'Total Employee %d' % Employee.empCount

     13         def displayEmployee(self):

     14                 print 'Name: ', self.name, ', Salary: ', self.salary

     15

     16 ee = Employee('zcl', 0)

     17 print 'doc', Employee.__doc__

     18 ee.displayCount()

     19 ee.displayEmployee()

     20 ee.prt()

     21 print 'hasattr', hasattr(ee, 'empCount'), ee.empCount

     22 print 'getattr', getattr(ee, 'empCount')

     23 print 'setattr', setattr(ee, 'empCount', 2), ee.empCount

     24 print 'delattr', delattr(ee, 'empCount')

     25 print 'hasattr', hasattr(ee, 'empCount')

     26 print '__dict__', ee.__dict__

     27 #print '__name__', ee.__name__

     28 print '__module__', ee.__module__

     29 #print '__bases__', ee.__bases__

     30

     31 class Name:

     32         def __init__(self):

     33                 self.name = 'I am father'

     34         def method(self):

     35                 print 'p', self.name

     36         def vmethod(self):

     37                 print 'vp', 'I am parent method'

     38

     39 class Point(Name):

     40         def __init__(self, x=0,y=0):

     41                 self.x = x

     42                 self.y = y

     43                 Name.__init__(self)

     44         def __del__(self):

     45                 class_name = self.__class__.__name__

     46                 print class_name, 'destroied'

     47         def submethod(self):

     48                 Name.method(self)

     49         def vmethod(self):

    50                 print 'vp', 'I am child method'

     51         def __repr__(self):

     52                 print '__repr__'

     53                 return 'repr finished'

     54         def __cmp__(self, x):

     55                 if 1==x :

     56                         return 1

     57                 else:

     58                         return 2

     59         def __add__(self, other):

     60                 return Point(self.x+other.x, self.y+other.y)

     61         __privateData = "You can not see me, but properly can!"

     62

     63 pt1 = Point()

     64 pt2 = pt1

     65 pt3 = pt1

     66

     67 print id(pt1), id(pt2), id(pt3)

     68 pt1.submethod()

     69 pt1.vmethod()

     70 print repr(pt1)

     71 print cmp(pt1, 1)

     72 del pt1

     73 del pt2

     74 del pt3

     75 p3 = Point(1, 2)+Point(4, 5)

     76 print 'p3.x, p3.y', p3.x, p3.y

     77 print 'privateData ', p3._Point__privateData

    //result

    # python test.py
    doc all employee
    Total Employee 1
    Name: zcl , Salary: 0
    self <__main__.Employee instance at 0x7fa0a01c4200>
    __class__ __main__.Employee
    hasattr True 1
    getattr 1
    setattr None 2
    delattr None
    hasattr True
    __dict__ {'salary': 0, 'name': 'zcl'}
    __module__ __main__
    140327857701664 140327857701664 140327857701664
    p I am father
    vp I am child method
    __repr__
    repr finished
    1
    Point destroied
    Point destroied
    Point destroied
    p3.x, p3.y 5 7
    privateData You can not see me, but properly can!
    Point destroied

    Finally:

    python 支持多继承,这样一来,它就是c++的脚本版本了吧!!哈哈,但其它高级语言都在弱化多继承,在此,我也不多做讨论了

    另外,多说一句,python里保护型成员用单下划线'_'

    OK,就这么吧

  • 相关阅读:
    通过elasticsearch对日志进行搜索热词统计
    登陆获取shell时的配置文件加载过程
    linux共享库加载
    linux安全相关
    ELK常用API使用方法
    linux bash缓存
    redis主从架构及redis集群
    排查电脑的网络问题
    Logstash添加Protobuf解析插件
    Macaca上手体验
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7810260.html
Copyright © 2011-2022 走看看