当前位置:首页>python>Python-17进阶语法-面向对象02(体系文章)

Python-17进阶语法-面向对象02(体系文章)

  • 2026-09-08 09:30:54
Python-17进阶语法-面向对象02(体系文章)
   本篇我们继续学习面向对象相关内容,今天说下魔术方法(面试基础有可能被问到),关注龙哥AI大模型,让我们一起进步
魔术方法

  魔术方法是Python中以双下划线开头和结尾的特殊方法。它们不需要你手动调用,但是需要定义,在特定情况下自动触发。最常见的例子就是__init__魔术方法主要给创建的对象做初始化的。

class Dog:    def __init__(self, name):  # 这是魔术方法        self.name = name# 创建对象时,__init__ 自动执行my_dog = Dog("旺财")  # 不需要写 my_dog.__init__("旺财")
class Person(object):    # 这是一个魔法函数: (不需要你调用.系统会在合适的时候自动调用.[你得定义])    def __init__(self,name,age):        self.name = name        self.age = age# 测试我们的类有没有属性..# p1 = Person() # TypeError: __init__() missing 2 required positional arguments: 'name' and 'age'p2 = Person('小伟',29)print(p2.name)print(p2.age)#-------------------------------------p3 = Person('小杰',21)print(p3.name)print(p3.age)
再看一个魔术方法__call__
# 加算器类class Adder(object):    def __init__(self, value=0):        self.data = value    # 调用对象的默认函数()    def __call__(self, x):        print("call执行.....")        return self.data + x# 创建计算器对象add = Adder(10)#使用计算器print(add(1))  # 11 通过对象名(参数)语法形式 默认就会调用__call__方法print(add(2))  # 12
下面看__str__
class Dog:    def __init__(self, name):        self.name = name    def __str__(self):        return f"一只叫{self.name}的狗"my_dog = Dog("旺财")print(my_dog)  # 打印对象名会自动调用__str__方法输出:一只叫旺财的狗
Python的魔术方法很多,大致了解若干就可以,下面列举一些,有大致印象就行
class Quick:    def __init__(self, name):    # 1.初始化        self.name = name    def __str__(self):           # 2.print显示        return self.name    def __len__(self):           # 3.len()        return len(self.name)    def __getitem__(self, i):    # 4.下标和遍历        return self.name[i]    def __call__(self, x):       # 5.函数调用        return f"{self.name}{x}"q = Quick("Tom")print(q)      # Tomprint(len(q)) # 3print(q[1])   # ofor c in q:   # 能遍历    print(c)print(q("Hi"))# Tom Hi
掌握这几个足够开发或基础面试了,希望这篇文章对你有帮助!欢迎留言交流。

最新文章

随机文章