python中的类

<

divnotes

1 classes and objects

1.1 类成员和对象成员

类成员相当于C++中的static成员变量,实例成员是和C++中的成员变量对应的,如下是类 成员:

>>> class counter:
...     count = 0                     1
...     def __init__(self):
...         self.__class__.count += 1 2
...     
>>> counter
<class __main__.counter at 010EAECC>
>>> counter.count                     3
0
>>> c = counter()
>>> c.count                           4
1
>>> counter.count
1
>>> d = counter()                     5
>>> d.count
2
>>> c.count
2
>>> counter.count
2

1.2 特殊函数

函数名以两个下划线开始和结束的函数名为特殊函数 如_setitem__getitem_是和[]操作相关联的

class MyDict:
    def __init__(self):
        self.data = {}

    def __setitem__(self, k, v):
        self.data[k] = v
        print('__setitem__(',k,',',v,')')
    def __getitem__(self, k):
        print('__getitem__(',k,')=',self.data.get(k,0))
        return self.data.get(k,0)


d = MyDict()
d[1] = 2
print(d[1])

1.3 私有函数

函数名以两个下划线开始且不是两个下划线结束的函数 变量名同样遵循次规则

class PrivateFunc:
    def __init__(self):
        self.ary = [1,2,3]

    def __listAry(self):
        for i in self.ary:
            print(i)

pf = PrivateFunc()
try:
    pf.__listAry()
except AttributeError as err:
    print('func not exist: ', err)

从程序看出,python其实是把函数名和变量名改名了,改名后的私有成员同样是public的, 可以直接调用

Date: 2013-04-16 16:39:51 中国标准时间


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值