Python 类创建实例化对象,给类动态添加类对象和类方法

类的实例化

#建立一个Python类
class Python :
    # 下面定义了2个类变量
    name = "安阳师范学院"
    add = "http://www.aynu.edu.cn/"
    # 定义一个类方法 该方法为类的构造方法
    def __init__(self,name = "安阳师范学院",web = "http://www.aynu.edu.cn/"): 
        #下面定义 2 个实例变量
        self.name = name
        self.web = web
        print(name,"网址为:",web)
    # 下面定义了一个say实例方法
    def say(self, content):
        print(content)
# 将该Python对象赋给python变量 (类的实例化)
python = Python("安阳师范学院","http://www.aynu.edu.cn/")
  • 在实例化对象时我从在一个学习视频上了解到类的实例化可以传过去空的参数,如果类中的方法有初始值则直接使用初始值,如果没有则输出空值,我在IDLE上做了尝试发现不行,暂时没有找到原因,在此记录一下,希望看到的大佬们提提自己的建议,也为自己随后寻找答案提供依据

动态添加和删除类变量

python.year = 100  #添加
print(python.year)

del python.year    #删除
print(python.year) #删除后再输出,程序会提示错误,测试时请注意

动态添加类

方法一:使用函数、lambda表达式为pyhon对象动态添加方法

#使用函数、lambda表达式为pyhon对象动态添加方法
''' 为 python 对象动态增加的方法,Python 不会
    自动将调用者自动绑定到第一个参数(即使将第一个
    参数命名为 self 也没用)。       '''
#先定义一个函数
def info(self):
    print("---info函数---",self)
#使用info对python的foo方法赋值(动态绑定方法)
#使用函数为python对象动态添加方法
python.foo = info
'''Python不会自动将调用者绑定到第一个参数
   因此程序需要手动将调用者绑定为第一个参数  '''
python.foo(python)#程序必须手动为第一个参数传入参数值

#使用lambda表达式为clanguage对象的bar方法赋值(动态绑定方法)
python.bar = lambda self: print('--lambda表达式--', self)######
python.bar(python)#程序必须手动为第一个参数传入参数值

方法二:使用types模块中的MehodType为pyhon对象动态添加方法

#使用types模块中的MehodType,可以不用手动给self传值

#首先导入MethodType
from types import MethodType
#定义一个函数
def info(self,content):
    print("安阳师范学院的网地址为:%s" % content)
python.info = MethodType(info,python)
'''使用MethodType包装info()函数时,已经将该函数的self参数
绑定为python,因此随后再使用info()函数时,不再需要手动绑定值了'''
python.info("http://www.aynu.edu.cn/")#调用info()函数

猜你喜欢

转载自blog.csdn.net/qq_43527959/article/details/104736117