类的专有方法

__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

最后更新于