目录

创建类

动态绑定属性

动态绑定方法


创建类

首先我们创建一个类和它的对象

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的动态绑定属性和方法的更多相关文章

  1. python动态绑定属性和方法

    基于Python 2.7.13测试. Python是动态语言,在类定义了之后,还可以动态地绑定属性和方法. 下面先来看怎么给类的实例动态地绑定属性和方法. >>> class Stu ...

  2. Python 给实例或者类动态绑定属性和方法

    首页定义一个class,创建一个实例之后,我们可以给该实例绑定任何属性和方法,先定义class: class Student: def __init__(self, name, score): sel ...

  3. python中类中属性和方法的具体定义方法和使用

    1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...

  4. python动态添加属性和方法

    ---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...

  5. python干货-类属性和方法,类的方法重写

    类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来 ...

  6. python -- 面向对象编程(属性、方法)

    一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...

  7. python 列表的属性和方法整理

    list属性和方法 补一个超实用的函数 envmerate(列表名, [start=0])  作用:  将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用 ...

  8. python常见模块属性与方法

    sys模块的变量 变量 描述 sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 '' sys.modules 已加载模块的字典 sys.version 版本信息字符串 s ...

  9. python 动态添加属性及方法及“__slots__的作用”

    1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...

  10. Python查看对象属性的方法

    帮助https://docs.python.org/2/library/functions.html dir() 函数 D:\pythontest>python Python (v3. , :: ...

随机推荐

  1. 解决AccessDatabaseEngine.exe 32位64位安装失败问题

    cmd下执行 你的路径\AccessDatabaseEngine.exe /quiet 转载于:https://www.cnblogs.com/64mb/p/10844676.html

  2. 建设数字工厂:MRP物料需求计划的逻辑原理与配置方法

    本文分享自华为云社区<数字工厂深入浅出系列(七): MRP物料需求计划的逻辑原理与配置方法>,作者:云起MAE. MRP是生产制造企业"管好"物料的核心工具方法,基本思 ...

  3. AVR汇编(二):AVR架构介绍

    AVR汇编(二):AVR架构介绍 ATmega328P介绍 ATmega328P是Atmel公司(现Microchip公司)推出的一个基于AVR架构的高性能低功耗单片机,拥有32KB的Flash.1K ...

  4. C#中多线程的用法

    1.在C#中使用多线程可以使用Thread 代码例子: public class ThreadExample { public static void ThreadProc() { for (int ...

  5. 《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: ...

  6. C#结合OpenCVSharp4图片相似度识别

    OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...

  7. 后浪搞的在线版 Windows 12「GitHub 热点速览」

    本周比较火的莫过于 3 位初中生开源的 Windows 12 网页版,虽然项目完成度不如在线版的 Windows 11,但是不妨一看.除了后生可畏的 win12 之外,开源不到一周的 open-int ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题

    一.用go语言,证明:在 RANDOMIZED-SELECT 中,对长度为0的数组,不会进行递归调用. 文心一言: 在 Go 语言中,我们可以通过实现一个函数来检查数组的长度,如果长度为0,则不进行递 ...

  9. POI 操作sheet.shiftRows注意点

    sheet.shiftRows后使用getRow/getCell会导致NullPointException 正确使用应该是CreateRow CreateCell

  10. Harry Potter RPG_1

    RPG--Harry Potter 博主最近迷上了<Harry Potter> So 我制作了一款RPG对话模拟游戏, 目前主线以进行到了分院以后: 有兴趣的小伙伴可以看看,能点个关注就更 ...