Python笔记

Python Python

1.定义私有变量,在变量前面加2个下划线’__’
class people:    
    __name = 'jack'
    __age = 12
2.类常用的内置方法
内置方法 说明
__init__(self,…) 初始化对象,在创建新对象时调用
__del__(self) 释放对象,在对象被删除之前调用
__new__(cls,*args,**kwd) 实例的生成操作
__str__(self) 在使用print语句时被调用
__getitem__(self,key) 获取序列的索引key对应的值,等价于seq[key]
__len__(self) 在调用内联函数len( )时被调用
__cmp__(stc,dst) 比较两个对象src和dst
__getattr__(s,name) 获取属性的值
__setattr__(s,name,value) 设置属性的值
__delattr__(s,name) 删除name属性
__getattribute__( ) __getattribute__( )功能与__getattr__( )类似
__gt__(self,other) 判断self对象是否大于other对象
__lt__(slef,other) 判断self对象是否小于other对象
__ge__(slef,other) 判断self对象是否大于或者等于other对象
__le__(slef,other) 判断self对象是否小于或者等于other对象
__eq__(slef,other) 判断self对象是否等于other对象
__call__(self,*args) 把实例对象作为函数调用
3.利用__new__生成单例
class Singleton(object):
    __instance = None                       # 定义实例

    def __new__(cls, *args, **kwd):         # 在__init__之前调用
        if Singleton.__instance is None:    # 生成唯一实例
            Singleton.__instance = object.__new__(cls, *args, **kwd)
        return Singleton.__instance
4.方法继承
# 方法继承,去掉return重写方法
def age(self):
    print 10
    return super(Men, self).age()
5.将对象属性转为字典
# 将对象属性转为dict
print men.__dict__
6.当前时间戳
import time

# time.time()返回当前时间戳
self.born = time.time()
7.property属性
class Men(object):

    def __init__(self):
        super(Person, self).__init__()
        self.__value = 0

    # 用property特性访问私有变量
    @property
    def value(self):
        return self.__value

    # 用property特性设置私有变量
    @value.setter
    def value(self, value):
        self.__value = value
8.__getattr__(self, name)方法

可以用来查询限时生成的属性,name为属性名

  • 如果在__init__方法初始化了某个属性,是不进入此方法的
  • 但如果重写__getattr__方法(不继承super),又进入此方法了,如果是继承__getattr__,就不进
  • 此方法不能继承:AttributeError: ‘super’ object has no attribute ‘__getattr__’

class Men(object):

    def __init__(self):
        super(Men, self).__init__()
        self.age = 21

    def __getattr__(self, name):
        if (name == 'girls'):
            print 'in __getattr__ girls'
            return 33
        elif (name == 'age'):
            print 'in __getattr__ age', self.age
            return 55

    men = Men()  
    print men.age       #print 21,age已在__init__声明,不进入__getattr__
    print men.girls     #print 33,进入__getattr__
9.packing

*args:接受单值参数,以元组形式保存

**kwds:接受赋值参数,以字典形式保存

def func(*name):
    print type(name)
    print name

func(1, 2, 3, 4, 5)         #(1, 2, 3, 4, 5)

func('sf', 'sf', 'error')   #('sf', 'sf', 'error')

def func1(**dict):
    print type(dict)
    print dict

func1(a=1, b=2, c=3)

func1(c=2, d=5, xx='33', ee='44', aa='2')