python:魔法方法和内置方法

文章目录

  • 前言
  • 一.内置方法
  • 二.魔法方法
  • 总结


前言

首先问一下大家,python是什么???这里简单说一下,python是一个高层次的结合了解释性、编译性、互动和面向对象的脚本语音。本章就简单了解一下python中的魔法方法和内置方法。(自己总结笔记)

一、内置方法(为了方便和美观,省略了前后的—双下划线)

  • hasattr  

判断前面这个类有没有后面这个属性

例:星月:这个对象有没有性别这个属

hasattra(xingyue , 'sex')
  • getattr

获取有属性的属性值,有属性则返回,没有报错

例:星月这个对象有没有名字这个属性,有的话返回控制台,没有报错

特别注意:如果定义了getattr,而没有任何代码(使用pass),则所有不存在的属性都是None不会报错可以使用super().getattr()方法解决.

getattr(xingyue,'name')
  • setattr

设置属性,无则增加,有则更改

例:设置对象,'给对象设置属性名','给对象设置属性值'

seattr(xingyue, 'sex','women')
  • delattr

删除属性

例:传对象,属性名字

  • issubclass

判断前面这个类是不是后面这个类的子类如果是返回T否则F

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
def eat(self):
    print(self.name, '正在吃饭')
    class Hunan(Person):
    pass

class Hunan1:
    pass

ayan = Person('星月', 18)
print(issubclass(Hunan1, Person)) 
    
  • isinstance

1.判断前面这个类是不是属于后面这个类的实例如果是返回T否则F

isinstance(星月,Person)

2.

判断前面数据是不是属于后面书记类型

isinstance(1,int)




isinstance(1.1,(int(float)))----判断是不是其中之一,是T否F

二、魔法方法(为了方便和美观,省略了前后的—双下划线)

魔法方法是python内置方法,不需要主动调用,存在的目的是为了给python的解释器进行调用,几乎每个魔法方法都有一个对应的内置函数,或者运算符,当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法,可以理解为重写这些python的内置函数。

  • new

功能:创建实例对象,  在内存中为对象分配空间,返回对象的引用 (new方法在init调用之前调用的)

  • str

  调用时机:

  1.打印对象的时候自动调用str,打印输出的是str的返回值

  2.数据类型转换时自动调用str

  应用场景:

  1.打印对象的时候,输出一些属性信息

  2.需要对对象转换字符串类型的时候

注意点:方法必须返回一个字符串,只有self一个参数.

  • repr

与str方法类型

注意点:如果在程序没有找到str这个方法就会调用repe简单说就是str的备胎**,**方法必须返回一个字符串,只有self一个参数.

  • del

调用时机:

  1.通过del关键字删除对象自动调用

  2.当对象在内存注销时自动调用

  应用场景:

  当程序运行结束,还需要做某个事情的时候就会将该代码写在这个方法里面.

  • 单例模式:

      必须要用到new方法

      概念: 单例模式又是设计模式就是为了优化代码---例:类始终只有一个实例对象,不会出现多个

      使用方法: 如果我们只需要类存在一个实例对象的时候

      作用: 节约空间

      应用场景: 

      1.音乐播放

      2.打印机


总结

提示:

此篇文章为自己总结部分内置方法和魔法方法笔记。

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值