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. , :: ...
随机推荐
- 显示Label标签
1 from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout 2 from PyQt5.QtCore import ...
- Could not extract response: no suitable `HttpMessageConverter` found for response type [class wechat.xx] and content type [text/plain] 问题
1. 问题复现 话不多说,先贴出问题代码:这里的GetUserInfoByAccessToken是我自定义的一个实体类. GetUserInfoByAccessToken getUserInfoByA ...
- 超详细的webpack之开始体验吧
webpack是一个前端工程化非常重要静态模块化打包工具,可以帮我们把 less.sass.esmodule.commonjs 等模块依赖处理成浏览器可识别的静态资源. 虽然webpack非常好用,但 ...
- [golang]获取本机IP
前言 方便在内网环境中获取服务器本机IP,省了在脚本中过滤ip或ifconfig的结果. 如果内网中有nginx的话,通过nginx获取本机IP也很方便,可参考 借助nginx自动获取本机IP 示例代 ...
- [python]爬取手机号码前缀和地区信息
概述 使用python爬取手机号码前缀7位.区号和地区. 小网站不容易,对爬虫也挺友好,就不放链接了. 代码 import requests from lxml import etree from f ...
- 《SQL与数据库基础》19. 日志
目录 日志 错误日志 二进制日志 日志格式 日志查看 日志删除 查询日志 慢查询日志 本文以 MySQL 为例 日志 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysql 启动 ...
- Hadoop核心概念
大数据开发总体架构: Hadoop是大数据开发所使用的一个核心框架.使用Hadoop可以方便的管理分布式集群,将海量数据分布式的存储在集群中,并使用分布式并行程序来处理这些数据. Hadoop由许多子 ...
- 《Python魔法大冒险》010 魔法宝箱:列表与元组的探险
城堡的大门 随着小鱼和魔法师的深入,他们来到了一个古老的废弃城堡.城堡的大门上挂着一个巨大的锁,而锁的旁边有一排小抽屉,每个抽屉里都有一个物品. 魔法师对小鱼说:"这是一个古老的魔法宝箱,小 ...
- html页面底部添加版权信息
话不多说,直接上代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- idea2020.3 安装插件JetBrains 插件市场安装 Cloud Toolkit
<Cloud Toolkit User Guide> 本文是 Alibaba Cloud Toolkit 的使用文档指引,所有相关的使用参考,都可以在本文中找到.如果在使用中有任何问题,请 ...