类的专有方法
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度 len()
__cmp__: 比较运算 sorted()
__call__: 函数调用
__add__: 加运算 +
__sub__: 减运算 -
__mul__: 乘运算 *
__truediv__: 除运算 //
__mod__: 求余运算 %
__pow__: 乘方 **
__init__
实例:
# 类定义了 __init__() 方法,类的实例化操作会自动调用 __init__() 方法
# __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5
__del__
实例:
class CLanguage:
def __init__(self):
print("调用 __init__() 方法构造对象")
def __del__(self):
print("调用__del__() 销毁对象,释放其空间")
clangs = CLanguage()
del clangs
__repr__
__repr__() 会返回和调用者有关的 “类名+object at+内存地址”信息。当然,我们还可以通过在类中重写这个方法,从而实现当输出实例化对象时,输出我们想要的信息。
实例1:
class CLanguage:
pass
clangs = CLanguage()
print(clangs)
以上实例输出结果:
<__main__.CLanguage object at 0x000001A7275221D0>
实例2:
class CLanguage:
def __init__(self):
self.name = "lujw666"
self.add = ".gitbook.io/learn/"
def __repr__(self):
return self.name + self.add
clangs = CLanguage()
print(clangs)
以上实例输出结果:
lujw666.gitbook.io/learn/
__setitem__和__getitem__
__setitem__以与键相关联的方式存储值 __getitem__以与键相关联的方式获取值
实例:
class Tag:
def __init__(self):
self.change={'python':'This is python',
'php':'PHP is a good language'}
def __getitem__(self, item):
print('调用getitem')
return self.change[item]
def __setitem__(self, key, value):
print('调用setitem')
self.change[key]=value
a=Tag()
print(a['php'])
a['php']='PHP is not a good language'
print(a['php'])
以上实例输出结果:
调用getitem
PHP is a good language
调用setitem
调用getitem
PHP is not a good language
最后更新于