python常用的魔法方法简单案例

# 魔法方法
# 1.__init__(self,...):初始化对象的方法
class Person:
    def __init__(self, name):
        self.name = name


person = Person("Alice")
print(person.name)  # 输出 "Alice"


# 2.__str__(self):返回对象的字符串表示
class Person:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f"Person:{self.name}"


person = Person('Bob')  # 输出 "Person: Bob"
print(person)


# 3.__len__(self):返回对象的长度

class MyList:
    def __init__(self, lst):
        self.lst = lst

    def __len__(self):
        return len(self.lst)


my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list))  # 输出5


# 4.__getitem__(self,index):获取对象的索引值
class MyList:
    def __init__(self, lst):
        self.lst = lst

    def __getitem__(self, index):
        return self.lst[index]


my_list = MyList([1, 2, 3, 4, 5])
print(my_list[2])  # 输出3

# 5.__setitem__(self, index, value):设置对象的索引值
class MyList:
    def __init__(self,items):
        self.items = items

    def __setitem__(self, key, value):
        self.items[key] = value

my_list = MyList([1,2,3,4,5])
my_list[2] = 10
print(my_list.items[2])

# 6. __iter__(self):返回一个迭代器对象
class MyList:
    def __init__(self, lst):
        self.lst = lst

    def __iter__(self):
        return iter(self.lst)

my_list = MyList([1, 2, 3, 4, 5])
for num in my_list:
    print(num)  # 依次输出 1, 2, 3, 4, 5

#7. __next__(self):返回迭代器的下一个值。
class MyList:
    def __init__(self, lst):
        self.lst = lst
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.lst):
            raise StopIteration
        value = self.lst[self.index]
        self.index += 1
        return value

my_list = MyList([1, 2, 3, 4, 5])
for num in my_list:
    print(num)  # 依次输出 1, 2, 3, 4, 5

# 8.__call__(self, ...):使对象可以像函数一样被调用
class Adder:
    def __call__(self, a, b):
        return a + b

adder = Adder()
result = adder(2,3)
print(result) #输出 5

# 9.__eq__(self, other):检查两个对象是否相等
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

p1 = Point(3, 4)
p2 = Point(3, 4)
print(p1 == p2)  # 输出 True

# 10.__del__(self):销毁对象时调用

class MyClass:
    def __del__(self):
        print("对象被销毁")

obj = MyClass()  # 创建对象
del obj  # 销毁对象,输出 "对象被销毁"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值