首页 > 代码库 > 自定义类的一些东西

自定义类的一些东西

1.

默认情况下,自定义的实例支持操作符==(总是返回False),可哈希运算,
如果重新实现了__eq__,实例不可哈希运算,可使用
def __hash__(self):
return hash(id(self))实现   (3中是这样的,2不是)

2.

object.__class__.__name__
(object.__class__ 对象所属类,object.__class__.__name的名字)

3.property

ex:

>>> class Demo(object):
def __init__(self,temp):
self.temp=temp
@property
def temp(self):
return self.__temp
@temp.setter
def temp(self,t):
if t<0:
raise ValueError(‘must>=0‘)
self.__temp=t
>>> d=Demo(-1)

Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
d=Demo(-1)
File "<pyshell#22>", line 3, in __init__
self.temp=temp
File "<pyshell#22>", line 10, in temp
raise ValueError(‘must>=0‘)
ValueError: must>=0
>>> d._Demo__temp
1
>>> d.temp=-1

Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
d.temp=-1
File "<pyshell#22>", line 10, in temp
raise ValueError(‘must>=0‘)
ValueError: must>=0
>>> d.__class__.__name__
‘Demo‘

 

>>> class Demo1(Demo):
def __eq__(self,other):
return self.temp==other.temp

>>> d1=Demo1(1)
>>> {d1:None}
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
{d:None}
TypeError: unhashable type: ‘Demo‘
>>> class Demo2(Demo1):
def __hash__(self):
return hash(id(self))


>>> d2=Demo2(1)
>>> {d2:None}
{<__main__.Demo1 object at 0x01126730>: None}

 

#python3程序开发指南

 

自定义类的一些东西