Python 给实例或者类动态绑定属性和方法
首页定义一个class,创建一个实例之后,我们可以给该实例绑定任何属性和方法,先定义class:
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
创建一个实例:
s1 = Student('sandy', 60) # 创建一个实例并初始化
s1.age = '15' # 给实例s1绑定一个属性
print(s1.age) # 打印这个属性
输出结果是:15 还可以给实例s1绑定一个方法,先定义一个方法:
def set_age(self, age):
self.age = age 然后绑定到实例s1
from types import MethodType
s1 = Student('sandy', 60) # 创建一个实例并初始化
s1.set_age = MethodType(set_age, s1) # 给实例绑定一个方法
s1.set_age(22) # 使用这个方法
print(s1.age) # 输出通过绑定方法设定的值
输出结果:22 绑定到实例的方法,只对这个实例s1有用,对别的实例是没有用的
如果要对其他的实例也有用,那么可以把方法绑定在class上
# _*_ coding:utf-8 _*_
from types import MethodType
def set_school(self, school): # 定义好要绑定到类的方法
self.school = school class Student: ## 定义类
def __init__(self, name, score):
self.name = name
self.score = score Student.set_school = set_school # 把方法绑定到类上
s1 = Student('sandy', 60) # 初始化一个实例
s1.set_school('hanghzou') # 实例调用类绑定的方法
print(s1.school)
s2 = Student('hello', 22)
s2.set_school('yuhang')
print(s2.school)
输出结果:
hanghzou
yuhang
Python 给实例或者类动态绑定属性和方法的更多相关文章
- python动态绑定属性和方法
基于Python 2.7.13测试. Python是动态语言,在类定义了之后,还可以动态地绑定属性和方法. 下面先来看怎么给类的实例动态地绑定属性和方法. >>> class Stu ...
- python面向对象-2深入类的属性
在交互式环境中输入: >>> class A: a=0 def __init__(self): self.a=10 self.b=100 >>> a=A() > ...
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- java基础学习总结六(对象与类、类的属性与方法)
一:面向过程与面向对象的区别 举例:一个人开门的动作,可以分解为开门,人进去,关门. 面向过程:人作为执行者,1:开门 2:进入 3:关门 面向对象:人作为指挥者,将开门,关门的动作都封装到门上 ...
- final可以修饰类、属性、方法
final可以修饰类.属性.方法. 当用final修饰类的时候,此类不可被继承,即final类没有子类.这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生. 当利用final修 ...
- Java 类、属性、方法修饰符 public、private、protected、default
Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数
Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数 //字符串分割: Split var reg: TPerlRegEx; List: TStrings; ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数
Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数 // EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile、Study
Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile.Study // Compile.Study var reg: TPerlRegEx; begin re ...
随机推荐
- SQL-13 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t.CREATE TABLE IF NOT EXISTS "titles" ( ...
- Centos7部署kubernetes-ETCD集群(三)
1.下载etcd软件包 wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.t ...
- kettle在linux下执行任务
1.下载 最新版下载 7.1 https://community.hitachivantara.com/docs/DOC-1009855 准备 上传任务文件 .kjb,.ktr 上传mysql 驱动 ...
- day 26面向对象 的封装 接口 抽象
大纲分析 # 面向对象# 类 :一类具有相同属性和方法的事物 #类的定义:class #类中可以定义的方法种类: #普通方法 self 对象 #类方法 cls @classmethod 类/对象 #静 ...
- Nginx 自动补全url地址补全最后的斜线
参考地址: http://blog.csdn.net/dong123dddd/article/details/51660368 location /riskcontrol { root /data; ...
- ubantu创建python虚拟环境
安装虚拟环境的命令如下: sudo pip install virtualenv sudo pip install virtualenvwrapper 创建虚拟环境的命令如下: mkvirtualen ...
- POJ2785-4 Values whose Sum is 0
传送门:http://poj.org/problem?id=2785 Description The SUM problem can be formulated as follows: given f ...
- [转]TDD之Dummy Stub Fake Mock
TDD之Dummy Stub Fake Mock 测试驱动大家都很熟悉了,这两天正好看了一个java的书,对TDD中的一些基本概念进行了复习,具体如下: Dummy An object that is ...
- 笔记本1050ti显卡安装最新驱动版本 (415.27) 记录 NVIDIA显卡GeForce系列 (Ubuntu18.04)
在Linux上安装驱动,这事情多半是跑CUDA程序的人才会搞的,多年前学CUDA时为这一步骤头疼的很,现如今已经比较熟悉了,今日给出一些记录. 首先,在NVIDIA官方网站上找到驱动下载页面: htt ...
- models.doc2vec – Deep learning with paragraph2vec
参考: 用 Doc2Vec 得到文档/段落/句子的向量表达 https://radimrehurek.com/gensim/models/doc2vec.html Gensim Doc2vec Tut ...