首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这样学会了Python中类与对象知识,网上没有看到这种见解

最近有许多小伙伴问我要入门 Python 资料,还有小伙伴完全没有入门 Python 就直接购买了 pandas 专栏。...但对于初学者来说,仍然一个非常难以理解事情。今天尝试从一个奇怪角度讲解使用类、对象相关知识。...其中有2种方式,第一种如下: 按属性归类,如上图,姓名单独一个列表 这显然一种不合理归类,因为需求往往一个学生做处理。...这类似于 字典对象[属性名字] ---- 别以为随意使用字典来类别这些概念: 自定义类型定义决定了实体结构。...获取对象数据字典 name 对应数据 行12:实例 + 点 + 函数名字 + 括号 ,执行对应函数 但是,为什么 show_me 函数中,有一个参数,但上面的调用没有传入任何东西?

78120

9 Python 基础: 手把手带你梳理对象、继承与多态知识点

有些时候,你会看到以一个下划线开头实例变量名,比如_name,这样实例变量外部可以访问,但是,按照约定俗成规定,当你看到这样变量时,意思就是,“虽然可以被访问,但是,请把视为私有变量,不要随意访问...总的来说就是,Python本身没有任何机制阻止你干坏事,一切全靠自觉。 获取对象信息 当我们拿到一个对象引用时,如何知道这个对象是什么类型、有哪些方法呢?...在Python中,如果你调用len()函数试图获取一个对象长度,实际上,在len()函数内部,它自动去调用对象__len__()方法,所以,下面的代码等价: >>> len('ABC') 3...请注意,在Python这类动态语言中,有read()方法,不代表该fp对象就是一个文件流,它也可能网络流,也可能内存中一个字节流,但只要read()方法返回有效图像数据,就不影响读取图像功能...但是,上面的调用方法又略显复杂,没有直接用属性这么直接简单。 有没有既能检查参数,又可以用类似属性这样简单方式来访问类变量呢?对于追求完美的Python程序员来说,这是必须要做到

1K50
您找到你想要的搜索结果了吗?
是的
没有找到

【已解决】Python 中 AttributeError: ‘NoneType‘ object has no attribute ‘X‘ 报错

作者介绍:程序员洲洲,一个热爱写作非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。...同时欢迎大家关注其他专栏,将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章 一、Bug描述 在Python编程中,AttributeError一个常见错误,它通常发生在尝试访问一个对象属性或方法时...,但该对象没有这个属性或方法。...二、定位报错原因 原因一: 返回None函数调用 如果一个函数预期应该返回一个对象,但实际上返回了None,然后我们尝试访问这个返回值属性,就会引发这个错误。...错误示例: obj = None print(obj.x) # 引发AttributeError 原因三:异常处理不当 在处理可能抛出异常代码时,如果没有正确捕获异常,并且在异常发生后尝试访问对象属性

52320

解决AttributeError: module ‘skimage‘ has no attribute ‘io‘

解决方法这个错误通常是由于库版本不兼容或者库没有正确安装所导致。下面几种常见解决方法:1. 检查scikit-image库版本首先,我们需要检查已安装scikit-image版本是否正确。...什么scikit-image库scikit-image一个开源Python图像处理库,专注于图像处理、计算机视觉和计算机图形学领域。...它为用户提供了一简单而强大工具,用于处理、操作和分析图像数据。...scikit-image一个功能强大且易于使用Python图像处理库,它提供了丰富功能和算法,方便用户进行图像处理、计算机视觉和计算机图形学研究和开发。...无论进行基本图像处理还是高级图像分析,scikit-image都是一个优秀选择。

43270

一文搞懂 Python 私有属性 & 私有方法

场景定义 私有属性 指在 Python 面向对象开发过程中,对象某些属性只想在对象内部被使用,但不想在外部被访问到这些属性。 即:私有属性对象不愿意公开属性。...从上图运行结果可以看出,第11行,即在对象外部访问对象私有属性 __salary 时,提示 AttributeError 错误,Staff 对象 zhangsan 没有属性 __salary。...为了证明 Staff 类对象确实是有__salary 这个实例属性,只是因为在对象外部不能访问私有属性把 self....__salary属性引用,做相应修改,看如下图所示运行结果。 可以从运行结果看出,这种非私有属性在外部调用是正常没有提示 AttributeError 错误。 (2)....可以从运行结果看出,这种非私有方法在外部调用是正常没有提示 AttributeError 错误。 (3). 从下图可以看出,在对象内部私有方法与私有属性可以被调用

1.6K10

【干货】计算机视觉实战系列01——用Python做图像处理

这是test.jpg图片 通过上述代码,我们返回值image就是一个PIL对象,当我们需要对一幅图像进行各种操作时,首先都要通过上述代码读取目标图像。...原因在于如果彩色图像,上面的方法没有任何问题,但是如果灰度图像,用上面的语句就不能正确显示,主要是没有加调色板。...NumPy一个非常有名 Python 科学计算工具包,其中包含了大量有用工具,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。...在显示灰度图像时array()方法将图像转换成NumPy数组对象,图片得以显示,否则会出现AttributeError错误。...▌调整尺寸和旋转 要调整一幅图像尺寸,我们可以调用resize()方法。该方法参数一个元组,用来指定新图像大小: out = image.resize((32,32)) 结果为下图所示: ?

2.9K121

python 面向对象基础 获取对象信息

换句话说,isinstance()判断一个对象是否该类型本身,或者位于该类型父继承链上。...使用dir() 如果要获得一个对象所有属性和方法,可以使用dir()函数,它返回一个包含字符串list,比如,获得一个str对象所有属性和方法: >>> dir('ABC') ['__add__'...在Python中,如果你调用len()函数试图获取一个对象长度,实际上,在len()函数内部,它自动去调用对象__len__()方法,所以,下面的代码等价: >>> len('ABC') 3...True >>> getattr(obj, 'y') # 获取属性'y' 19 >>> obj.y # 获取属性'y' 19 如果试图获取不存在属性,会抛出AttributeError错误: >>>...请注意,在Python这类动态语言中,根据鸭子类型,有read()方法,不代表该fp对象就是一个文件流,它也可能网络流,也可能内存中一个字节流,但只要read()方法返回有效图像数据,就不影响读取图像功能

74210

Python正则表达式

当使用正则表达式时,一对圆括号可以实现以下任意一个(或者两个)功能: 对正则表达式进行分组; 匹配子 常见正则表达式属性 函数/方法 描述 仅仅是re模块 compile 使用任何可选标记来编译正则表达式模式...num特定子 groups 返回一个包含所有匹配子元祖(没有成功,返回空元组) groupdict 返回一个包含所有匹配命名子字典,所有的子名称作为字典键 常用模块属性 re.I...不区分大小写匹配 匹配对象以及group()和groups()方法   成功调用match()和search()返回对象。   ...group()要么返回整个匹配对象,要么根据要求返回特定子。groups()则仅返回一个包含唯一或者全部子元组。...用来替换部分通常是一个字符串,但它也可能一个函数,该函数返回一个用来替换字符串。

1.6K90

Python3 与 C# 扩展之~基础拓展

,动态添加属性,还有没有不知道知识了?"...小张沉默不语,默默看着小明讲课,随后心里想到:“这个坑货,话也不说全,还好现在夏天,不然早着凉了” 要想添加其他实例都可以访问属性,可以给类添加一个属性,用法和上面差不多,只是把对象改成类。...type(name, bases, attrs) class Person(object, metaclass=create_class): pass def main(): # 判断一个对象没有某个属性...只是看你骨骼清奇,想要收你为徒罢了...“ (完) ---- 经典引用:(参考1 参考2) 在Python中,每个对象都保存了一个称为引用计数整数值,来追踪到底有多少引用指向了这个对象。...刚刚说到例子中,我们以一个不是很常见情况结尾:我们有一个“孤岛”或是一未使用、互相指向对象,但是谁都没有外部引用。

1.3K40

Python中dir,hasattr,getattr,setattr,vars使用

一、dir([object]) dir函数目的交互式使用,因此没有提供完整属性列表,只列出一“重要属性名。 dir函数能审查有或没有 __dict__ 属性对象。...__delattr__调用del删除属性时会调用方法。 ?...接着使用上面定义类,我们可以获取Women对象已有的属性和方法,如果获取没有属性和方法,会报错。 如果对象没有属性,我们可以设置默认值,则getattr会返回这个默认值。...把object对象指定属性值设为value,前提object对象能接受那个值。这个函数可能会创建一个属性,或者覆盖现有的属性。...这个函数实现方法调用getattr(object, name) 函数,看看是否抛出AttributeError异常。

1.4K30

开源图书《Python完全自学教程》8.7.1下划线

8.7 封装和私有化 在程序设计中,封装(Encapsulation)对具体对象一种抽象,将某些部分“隐藏”起来,在程序外部“看不到”,其含义其他程序无法调用,不是人用眼睛看不到那个代码。...再给类 Foo 增加一个方法 get_name ,在这个方法中,通过类名称调用 __name 属性。...下面的代码一个比较完整示例,请读者认真阅读,并体会“私有化”作用效果。...__python() 时报 AttributeError 异常,说明方法 __python() 不能调用,因为它名称用双下划线开始,表明一个私有化方法。...__name 时,Python 解释器没有也不会将 __name 解析为 _Foo__name ,所以在调用__name 时就显示 AttributeError

56620

通过内置对象理解 Python(七)

,两者具有很高相似性,但字典要灵活得多,例如,可以检查字典中是否存在一个键(对应于对象属性): >>> d = {} >>> 'prop' in d False >>> d['prop'] = 'exists...通过 property 装饰器,将属性转换为一方法来实现一个方法在访问属性时运行,另一个方法尝试更改属性值时运行。...看一个例子,我们试图确保一个学生 marks 属性总是被设置为正数,因为学习成绩不能负数: class Student: def __init__(self): self....坦率地说,描述符一个非常高级的话题,如果在这里试图涵盖它,没有任何用处,因为它只是和已告知内容有所关联。...: 它们不可变,这意味着一旦创建了元组对象,就不能添加或删除其中成员。

54420

Python面向对象魔法方法和单例模块代码实例

__delarttr__: __getattr__: 会在对象.属性时,“属性没有情况下才会触发。对象....# def __getattr__(self, item): # print('只有对象获取一个没有属性值得时候触发!')...def __getattribute__(self, item): print('类或对象无论获取属性没有都会触发!...__slots__是什么:一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 2.引子:使用点来访问属性本质就是在访问类或者对象__dict_...关于__slots__一个常见误区它可以作为一个封装工具来防止用户给实例增加新属性。尽管使用__slots__可以达到这样目的,但是这个并不是它初衷。 更多用来作为一个内存优化工具。

56500

2022年最新Python大数据之Python基础【九】面向对象与继承

18 女 p2 = Person() # AttributeError: 'Person' object has no attribute 'name' # 哪怕是在类内部添加实例属性,两个对象之间没有任何关系...可以 p1.name = 'Rose' print(p1.name) # Rose # 同一个对象在类内部和外部添加实例属性 本质上一样 # 在类外部使用对象名,其实使用对象引用地址,...简便,灵活.复用性高 # 1.我们每次使用对象不一致,如果使用对象名,需要每次都传入不同对象名,或者每个对象定义一个方法,这样不利于代码复用. # 2.在某些时刻,我们在没有对象赋值给变量时候...,就需要添加其属性,这个时候,没有办法获取对象名称. 2、__init__()方法 __init__()方法在对象创建完成后,初始化对象时,自动调用 在init方法中添加属性,由于每个对象都会执行该方法...print('要唱一个大河向东流,赶紧跑') # 同时继承两个父类,则在使用子类对象时可以调用两个父类中所有非私有属性和方法 # class Son(Father, Mother): #

28810

Python 魔法方法之__getattr__(self,name)

前言 当实例对象调用一个不存在属性时,系统通常会报错,那有啥办法避免这种现象么,或者说自定义报错信息,答案肯定,我们可以通过定义__getattr__(self,name)魔法方法来实现。...__getattr__(self, name) __getattr__(self,name) 定义当用户获取一个不存在属性行为。...当实例对象调用不存在属性时,如果在类中没重载__getattr__(self,name)方法,则会抛出AttributeError异常,如下所示: >>> class Animal(): ......这边也来说下调用__getattr__详细过程: 1.在对象实例属性中寻找,找不到执行下一步2.在类中查找类属性,找不到执行下一步3.在对象继承链上寻找,找不到执行下一步4.调用__getattr...__ 方法,如果用户没有定义或者还是找不到,抛出AttributeError异常,属性查找失败!

1.5K20

Python学习笔记(六)·面向对象编程

而面向对象程序设计把计算机程序视为一对象集合,而每个对象都可以接收其他对象发过来消息,并处理这些消息,计算机程序执行就是一系列消息在各个对象之间传递。...有些时候,你会看到以一个下划线开头实例变量名,比如_name,这样实例变量外部可以访问,但是,按照约定俗成规定,当你看到这样变量时,意思就是,“虽然可以被访问,但是,请把视为私有变量,不要随意访问...在 Python 中,如果你调用len()函数试图获取一个对象长度,实际上,在len()函数内部,它自动去调用对象__len__()方法,所以,下面的代码等价: >>> len('ABC')...请注意,在 Python 这类动态语言中,根据鸭子类型,有read()方法,不代表该 fp 对象就是一个文件流,它也可能网络流,也可能内存中一个字节流,但只要read()方法返回有效图像数据...仍然可以访问 Student >>> del s.name # 如果删除实例name属性 >>> print(s.name) # 再次调用s.name,由于实例name属性没有找到,类name属性就显示出来了

56120

python高级-动态特性(20)

一、动态语⾔定义 动态语言在运行时确定数据类型语言。变量使用之前不需要类型声明,通常变量类型被赋值那个值类型。...: 'Person' object has no attribute 'run' 说明:正在吃东西打印出来了,说明eat函数被执行,但是后面报错说没有run这个属性,但是想在类创建好了以后,在运行时候动态添加...P1 = Person("小明",24) #正常调用类里面的函数 P1.eat() #给对象动态绑定方法 #MethodType(参数1,参数2) #参数1:动态绑定哪个方法,只写方法名即可 #参数...,也是直接在使用前赋值即可使用 五、运行过程中删除属性、方法 删除方法: del 对象.属性名 delattr(对象, "属性名") class Person(object): def __...' 注意: 使用__slots__要注意,__slots__定义属性仅对当前类实例起作用,对继承子类不起作用

49740

Python指南:高级程序设计之面向对象程序设计进阶

_getattrobute__() 只要涉及到实例属性访问就会调用该方法,如果属性不存在会抛出AttributeError 异常。...__getattr__() 在以下情况下调用属性不在实例dict中; 属性不在其基类以及祖先类dict 中; 触发AttributeError 异常时(不仅仅是get_attribute() 引发异常...ValueError("cannot delete a const attribute") ValueError: cannot delete a const attribute 02.函子 在计算机科学中,函子一个对象...,该对象可以向函数一样进行调用,在 Python 中,函子就是另一种类型函数对象。...任何包含了特殊方法 __call__() 类都是一个函子。函子可以提供关键好处可以维护一些状态信息。

86220

爬虫系列:连接网站与解析 HTML

由于这两个库并不是 Python 标准库,因此需要单独安装这两个库: pip install beautifulsoup4 pip install requests 下面获取网站内容示例代码: from...as e: 以上就完成了一个使用 Python 连接网站过程。...这个时候如果没有异常我们就会拿到网站 HTML 代码,之后根据需要进一步对 HTML 进行内容解析,获取自己需要内容。...解析 HTML 如果你已经确定了目标内容,可能采集一个名字,一统计数据,或者一段文字。...你目标内容可能隐藏在一个 HTML “烂泥堆”第20层标签里,带有许多没用标签或 HTML 属性,你按照目标网站代码层级你有可能写出如下一行代码抽取内容: bsObj.findAll("table

2.3K20
领券