首页定义一个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 给实例或者类动态绑定属性和方法的更多相关文章

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

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

  2. python面向对象-2深入类的属性

    在交互式环境中输入: >>> class A: a=0 def __init__(self): self.a=10 self.b=100 >>> a=A() > ...

  3. <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

    设计类

  4. java基础学习总结六(对象与类、类的属性与方法)

    一:面向过程与面向对象的区别 举例:一个人开门的动作,可以分解为开门,人进去,关门. 面向过程:人作为执行者,1:开门  2:进入   3:关门 面向对象:人作为指挥者,将开门,关门的动作都封装到门上 ...

  5. final可以修饰类、属性、方法

    final可以修饰类.属性.方法. 当用final修饰类的时候,此类不可被继承,即final类没有子类.这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生. 当利用final修 ...

  6. Java 类、属性、方法修饰符 public、private、protected、default

    Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...

  7. Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数

    Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数 //字符串分割: Split var   reg: TPerlRegEx;   List: TStrings; ...

  8. Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数

    Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数 // EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var   ...

  9. Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile、Study

    Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile.Study // Compile.Study var   reg: TPerlRegEx; begin   re ...

随机推荐

  1. L256 翻译

    Should work be placed among the causes of happiness or be regarded as a burden? Much work isexceedin ...

  2. 2019.1.23 DFMEA for

  3. Oracle非归档模式下脱机数据文件

    正常情况下,要想对数据文件脱机,必须在归档模式下,这是ORACLE自动保护的一种措施,防止在非归档模式下对数据文件脱机,造成数据丢失.如果想在非归档模式下执行数据文件脱机操作,则需要加上“for dr ...

  4. 合并k个有序数组

    给定K个有序数组,每个数组有n个元素,想把这些数组合并成一个有序数组 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创建一个大小为n*k的数组保存最后的结果创建一个大小为k的最小 ...

  5. day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块

    # 多态的理解:# Python 天生自带多态# 鸭子类型 list 和 tuple 就是一对鸭子类型 很像但是没有继承关系## 而其他的类型 上传参数或者打印参数的时候 必须是指定的数据类型# -- ...

  6. 记一次ios加急上架经历

    https://developer.apple.com//contact/app-store/?topic=expedite app迭代版本上架之前一直好好的没报错,没crash,但是有一次加急上架, ...

  7. 解决MySQL不允许远程连接的问题

    进入MySQL:mysql  -u  root  -p mysql> GRANT ALL privileges ON *.* TO 'root' @'localhost' IDENTIFIED ...

  8. ‘’.join(列表)--列表转化为一个语句。 strip()删除掉str中的左右的空白字符

    1和2相比,删除掉了str左右的空白字符,2和3相比,删除掉了上下的空白字符

  9. python实现的简单点对点(p2p)聊天

    点对点聊天首先是基于多线程的网络编程,其次就是将每一个连接都保存为一个具有独一属性的对象并添加到连接列表中,对于每一个连接对象发送过来的信息必须要包含主要的三项内容(from,to,messages) ...

  10. 使用grafana cli重置grafana密码

    Grafana CLIgrafana cli是grafana server自带的一个小巧的二进制工具,用来在运行grafana server的机器上执行命令.插件grafana cli工具允许你安装升 ...