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')