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. , :: ...
随机推荐
- 牛客小白月赛65 D题 题解
原题链接 题意描述 一共有两堆石子,第一堆有 \(a\) 个,第二堆有 \(b\) 个,牛牛和牛妹轮流取石子,牛牛先手,每次取石子的时候只能从以下 \(2\) 种方案种挑一种来取(对于选择的方案数必须 ...
- Programming abstractions in C阅读笔记: p114-p117
<Programming Abstractions in C>学习第48天,p114-p117,总结如下: 一.技术总结 主要通过random number介绍了随机数的相关用法,int ...
- 程序员视角下的API数据接口对接指南
在当今互联网时代,许多应用程序和网站都需要使用第三方的API接口来获取数据.API(Application Programming Interface)允许不同的应用程序之间进行数据交互,从而提高 ...
- API数据接口的应用步骤
API(Application Programming Interface)是现代软件应用程序开发中的一项重要技术,它允许不同的应用程序之间进行通信和数据交换.API接口通过提供统一的访问点,使得应用 ...
- SpringSecurity简明教程
SpringSecurity主要实现UserDetailsService来验证登录的用户信息,和Security的配置类来对登录方式和资源进行限制. 案例包含利用数据库进行登录验证.URL访问限制.自 ...
- CodeForces-1278B-A-and-B
题意 对于\(t(1\leq t\leq 100)\)个测试点,给两个数\(a\)和\(b\),作如下操作: 第一次挑一个数使其加\(1\),第二次挑一个数使其加\(2\),以此类推,最后两个数相等, ...
- IOS苹果应用IPA重签名软件手机版(苹果重签名,企业签名,安卓苹果平台,时间控制)
软件简介 IOS苹果应用IPA重签名软件手机版,可以在安卓或者苹果手机上,苹果应用IPA文件重新签名,无需MAC苹果电脑和配置XCODE开发环境,便可以直接对IPA文件进行签名,签名在本地进行,不消耗 ...
- Mysql基础篇-查询、函数、多表、事务
1. 基础篇 1.1 mysql用户和权限管理 查询用户 USER mysql; SELECT * FROM user; 创建用户 CREATE USER '用户名'@'主机名' IDENTIFIED ...
- vue3探索——pinia高阶使用
以下是一些 Pinia 的其他高阶功能: storeToRefs():响应式解构仓库,保证解构出来的数据是响应式的数据. 状态持久化:Pinia 并没有内置的状态持久化功能,但你可以使用第三方库或自定 ...
- 一款广受社区好评的 WAF
大家好,我是 Java陈序员,我们有时会搭建一个属于自己的网站,但是自建网站很容易被收到攻击,今天给大家介绍一款简单免费好用的 WAF 网站防护工具. WAF 是 Web Application Fi ...