python的动态绑定属性和方法
目录
创建类
首先我们创建一个类和它的对象
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self):
print(self.name + '在打蜗牛')
sws_1 = Student('慢蜗牛', 20)
sws_2 = Student('SSN', 30)
然后我们来看看 他们在内存中的关系

从关系中我们不难看出一个Student类可以创建N个Student类的实例对象
每个实例对象的属性值可以相同,也可以不同
而当我们需要给一个实例对象添加属性,比如添加一个性别的时候,我们就可以用动态绑定了
动态绑定属性
直接用点号'.'来绑定
sws_2.gender = '女'
print(sws_2.name, sws_2.age, sws_2.gender)
直接点号后面接我们想要添加的属性,然后给这个属性赋值就行
SSN 30 女
但是如果我们让没有进行动态绑定的sws_1来打印gender就会报错了
sws_2.gender = '女'
print(sws_2.name, sws_2.age, sws_2.gender)
print(sws_1.gender)
结果如:
Traceback (most recent call last):
File "D:\pythonProject\main.py", line 15, in <module>
print(sws_1.gender)
AttributeError: 'Student' object has no attribute 'gender'
原理如图所示,在创建完对象之后,我们只在sws_2中进行了动态绑定性别
而没有在sws_1中绑定,所以运行会报错

动态绑定方法
如前面动态绑定属性一样,我们动态绑定方法也用点号'.',不过得先提前定义函数
注意!!!类之外def的成为函数,类里面的叫方法
def slowsnail():
print('定义在类之外的函数')
sws_1.slowsnail = slowsnail
sws_1.slowsnail()
sws_2.slowsnail()
同样的,我们给sws_1动态绑定,然后也给sws_2运行一下这个方法
定义在类之外的函数
Traceback (most recent call last):
File "D:\pythonProject\main.py", line 24, in <module>
sws_2.slowsnail()
AttributeError: 'Student' object has no attribute 'slowsnail'
如前面绑定属性一样,没有动态绑定的sws_2也被编译器报错了
python的动态绑定属性和方法的更多相关文章
- python动态绑定属性和方法
基于Python 2.7.13测试. Python是动态语言,在类定义了之后,还可以动态地绑定属性和方法. 下面先来看怎么给类的实例动态地绑定属性和方法. >>> class Stu ...
- Python 给实例或者类动态绑定属性和方法
首页定义一个class,创建一个实例之后,我们可以给该实例绑定任何属性和方法,先定义class: class Student: def __init__(self, name, score): sel ...
- python中类中属性和方法的具体定义方法和使用
1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...
- python动态添加属性和方法
---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...
- python干货-类属性和方法,类的方法重写
类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...
- python -- 面向对象编程(属性、方法)
一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...
- python 列表的属性和方法整理
list属性和方法 补一个超实用的函数 envmerate(列表名, [start=0]) 作用: 将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用 ...
- python常见模块属性与方法
sys模块的变量 变量 描述 sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 '' sys.modules 已加载模块的字典 sys.version 版本信息字符串 s ...
- python 动态添加属性及方法及“__slots__的作用”
1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...
- Python查看对象属性的方法
帮助https://docs.python.org/2/library/functions.html dir() 函数 D:\pythontest>python Python (v3. , :: ...
随机推荐
- 解决AccessDatabaseEngine.exe 32位64位安装失败问题
cmd下执行 你的路径\AccessDatabaseEngine.exe /quiet 转载于:https://www.cnblogs.com/64mb/p/10844676.html
- 建设数字工厂:MRP物料需求计划的逻辑原理与配置方法
本文分享自华为云社区<数字工厂深入浅出系列(七): MRP物料需求计划的逻辑原理与配置方法>,作者:云起MAE. MRP是生产制造企业"管好"物料的核心工具方法,基本思 ...
- AVR汇编(二):AVR架构介绍
AVR汇编(二):AVR架构介绍 ATmega328P介绍 ATmega328P是Atmel公司(现Microchip公司)推出的一个基于AVR架构的高性能低功耗单片机,拥有32KB的Flash.1K ...
- C#中多线程的用法
1.在C#中使用多线程可以使用Thread 代码例子: public class ThreadExample { public static void ThreadProc() { for (int ...
- 《Linux基础》07. 软件管理
@ 目录 1:软件管理 1.1:rpm 1.1.1:查询 1.1.2:卸载 1.1.3:安装 1.2:yum 1.3:dpkg 1.4:apt 1.4.1:相关配置 1.4.2:常用指令 1.4.3: ...
- C#结合OpenCVSharp4图片相似度识别
OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...
- 后浪搞的在线版 Windows 12「GitHub 热点速览」
本周比较火的莫过于 3 位初中生开源的 Windows 12 网页版,虽然项目完成度不如在线版的 Windows 11,但是不妨一看.除了后生可畏的 win12 之外,开源不到一周的 open-int ...
- 文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题
一.用go语言,证明:在 RANDOMIZED-SELECT 中,对长度为0的数组,不会进行递归调用. 文心一言: 在 Go 语言中,我们可以通过实现一个函数来检查数组的长度,如果长度为0,则不进行递 ...
- POI 操作sheet.shiftRows注意点
sheet.shiftRows后使用getRow/getCell会导致NullPointException 正确使用应该是CreateRow CreateCell
- Harry Potter RPG_1
RPG--Harry Potter 博主最近迷上了<Harry Potter> So 我制作了一款RPG对话模拟游戏, 目前主线以进行到了分院以后: 有兴趣的小伙伴可以看看,能点个关注就更 ...