python的魔术方法

python的魔术方法

class Professor:
    def __init__(self, name, department, research_areas):
        self.name = name
        self.department = department
        self.research_areas = research_areas

    def __str__(self):
        return f"{self.name} works in {self.department} department and researches {', '.join(self.research_areas)}"

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

    def __getitem__(self, i):
        return self.research_areas[i]

    def __setitem__(self, i, value):
        self.research_areas[i] = value

    def __delitem__(self, i):
        del self.research_areas[i]

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

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

    def __call__(self, *args):
        print(f"{self.name} is giving a lecture on {', '.join(args)}")

# 创建Professor实例
prof = Professor("John Doe", "Computer Science", ["machine learning", "computer vision", "natural language processing"])

# 调用__str__()方法
print(str(prof))

# 调用__len__()方法
print(len(prof))

# 调用__getitem__()方法
print(prof[0])

# 调用__setitem__()方法
prof[1] = "deep learning"
print(prof[1])

# 调用__delitem__()方法
del prof[0]
print(prof)

# 调用__iter__()方法
for area in prof:
    print(area)

# 调用__call__()方法
prof("machine learning", "computer vision")

创建了一个名为prof的Professor类的实例,并通过不同的方式调用了不同的魔术方法。我们首先调用__str__()方法以字符串形式打印出prof实例的描述。接着,我们调用__len__()方法获取教授姓名的长度。然后,我们调用__getitem__()和__setitem__()方法,以获取和设置实例属性research_areas的值。接下来,我们使用__delitem__()方法删除实例属性research_areas中的一个元素。然后,我们调用__iter__()和__next__()方法,以对research_areas进行迭代。最后,我们调用__call__()方法,以模拟教授正在讲授某些领域的课程。

展开阅读全文

页面更新:2024-04-23

标签:魔术   方法   字符串   长度   实例   属性   元素   姓名   教授   形式

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top