python - 类的特殊成员

本文详细介绍了Python中几个常用的特殊方法,包括__init__用于初始化对象属性,__str__定义了对象的字符串表示形式,__getitem__和__setitem__允许使用自定义方式获取和设置对象属性,__delitem__则提供了删除对象属性的功能。通过这些特殊方法,可以更加灵活地控制类的行为。
class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
   
    def __str__(self):
        return "%s - %d" %(self.name,self.age)

obj1 = Foo('alex',73)
obj2 = Foo('eric',84)
print(obj1)

out:
alex - 73

 

__getitem__

class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
    def __getitem__(self, item):
        return 123

obj = Foo('alex',73)
ret = obj['ab']
print(ret)

out:

123

class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
def __getitem__(self, item): print(item.start) print(item.stop) print(item.step)
print(type(item),item) obj
= Foo('alex',73) ret2 = obj[1:4:2]

out:

1
4
2

<class 'slice'> slice(1, 4, 2)

 

__setitem__

class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
    def __getitem__(self, item):
        return 123

    def __setitem__(self, key, value):
        print('setitem')


obj = Foo('alex',73)
obj['k1'] = 111

out:

setitem

 

class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
  

    def __setitem__(self, key, value):
        print(type(key),type(value))
        print(key.start)
        print(key.stop)
        print(key.step)


obj = Foo('alex',73)

obj[1:4] = [11,22,33,44]

out:

<class 'slice'> <class 'list'>
1
4
None

 

__delitem__
class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age
   
    def __delitem__(self, key):
        print('del item')


obj = Foo('alex',73)

del obj['k1']

out:

del item

 

class Foo:
    #构造方法
    def __init__(self,name,age):
        pass
        self.name = name
        self.age = age


    def __delitem__(self, key):
        print(type(key))
        print(key.start)
        print(key.stop)
        print(key.step)


obj = Foo('alex',73)

del obj[1:4]

out:

<class 'slice'>
1
4
None

 

转载于:https://www.cnblogs.com/pangguoping/p/5618045.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值