python 给对象绑定属性和方法

Posted 红尘陌上,独自行走

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 给对象绑定属性和方法相关的知识,希望对你有一定的参考价值。

# 以c语言为主是静态语言,运行之前先编译,在运行的过程中不允许编辑代码
# 在运行的过程中,可以改变,可以添加属性,就是属于动态语言(python)


# python动态的添加属性以及方法
class Test(object):
pass

# t = Test()
# print(dir(t))


# 运行的过程中给对象绑定(添加)属性
class Person(object):
  def __init__(self,newName,newAge):
    self.name = newName
    self.age = newAge
  def eat(self):
  print("---%s正在吃--"%self.name)
# 添加属性
# laowang = Person("老王",100000)
# print(laowang.name)
# print(laowang.age)
# laowang.addr = ‘山东‘ #给对象添加属性,属性和对象绑定到了一起
# print(laowang.addr)

# laozhao = Person("老赵",18)
# print(laozhao.name)
# print(laozhao.age)
# # print(laozhao.addr)

# Person.num = 100 #给类添加属性,属性和类绑定到了一起
# print(laowang.num)
# print(laozhao.num)

# 添加方法

def run(self):
  print("---%s正在吃--"%self.name)


p1 = Person("p1",10)
p1.eat()

# p1.run = run  #这个方法式错误的
# p1.run() #虽然p1对象中的run属性已经指向了10行的函数,但这句代码还是不正确,因为run属性指向的函数时候来添加的,p1.run()的时候,并没有把p1当作第一个参数,导致了第10行的函数调用的时候,出现了缺少参数的问题

 

# import types
# types.MethodType() #把函数绑定到实例对象上

import types
p1.run = types.MethodType(run,p1)
p1.run()































以上是关于python 给对象绑定属性和方法的主要内容,如果未能解决你的问题,请参考以下文章

python-类和对象(属性方法)的动态绑定

python中属性和方法的动态绑定

python:属性查找与绑定方法

Python类和实例方法和属性的动态绑定

python-属性的查找与绑定方法

30.Python面向对象类方法和静态方法动态绑定属性和__slots__限制绑定@property