python动态实例化对象

python动态实例化(python的类中怎么实现动态化函数)

1.python的类中怎么实现动态化函数

给你这样一个例子吧,这个例子里面有动态增加类的函数。

声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数。代码如下所示:class WinBAS(Bas): def __init__(self): self.__baslist = {} self.__Init_Modules() pass def __Init_Modules(self): import modplugs for m in modplugs.__moduleset__: mh = __import__('modules.' + m)# + '.' + m) ma = getattr(mh, m)# + '.' + m) ma = getattr(ma, m) setattr(self.__class__, m, ma)modplugs.py是模块配置文件如下:__moduleset__ = ['BAS_GetUserList',]然后建立目录modules下面建立一个空的__init__.py文件,把目录变为一个包,在modules目录下建立真正的BAS_GetUserList实现:BAS_GetUserList文件中有个BAS_GetUserList函数如下:def BAS_GetUserList(self, strs): return [0, strs]这样WinBAS类就可以动态加入了BAS_GetUserList函数。

2.python 类实例化

1、python的类中,以__(两个下划线)开头但不以__结束的就是私有的变量或者函数,私有函数和变量不能在class外调用到。

class test:

def __init__(self, num):

self.__num = num

privateTest = test(100)

privateTest.__num#会报错

当然也有办法调到,只是不建议那样做。

2、第一个class se()中的 变量s,是一个类变量,是class se的变量,类变量可以被类本身访问,如se.s,也可以被各个对象访问,而且由于是存在class里的所以值唯一,有点像C++里的static。

但是如果有某一个对象也创建了一个叫s的变量 覆盖了类变量,那么那个self.s就是对象的属性,而不会调到类变量。

你可以运行试试

# -*- coding: cp936 -*-

class A:

name = []

def __init__(self, name):

self.name.append(name)

def nameMyself(self, name):

self.name = [name]

print 'my name is',self.name, 'and class A1name is :', A.name

def test(self):

print "my name is", self.name

obj = A("num0")

obj1 = A("num1")

print "obj1`name", obj1.name#对象访问类变量name

print "class A`name", A.name#class自己访问类变量name

obj1.test()#此时还是访问的类变量name

obj1.nameMyself('aid')#给自己起个名覆盖类变量的name

obj1.test()#对于obj1来说只能访问自己的name了

print "class A`name", A.name#类变量依然存在

3.Python中类是怎么实例化的

定义一个类封装所有的属性,然后把这个类的对象作为返回值。

不知道是不是你要的意思: (self,nodes,city,state,description=None):self.nodes=nodesself.city=cityself.state=stateself.description=descriptiondefnode_by_name(nodes,city,state):#='NORTHCAMBRIDGE'returnNode(nodes,city,state,description)ans=node_by_name('testNode','CAMBRIDGE','MA')printans.state,ans.description。

4.python中实例方法、静态方法和类方法的使用场景

1.对象方法:归属于实例(类创建出的对象),需要访问对象属性的方法定义为实例方法

2.静态方法:不需要访问实例属性和实例方法,比如创建对象前,进行实例化参数验证的方法,先于实例化的存在。这个时候可以使用静态方法。

3.类方法:需要获取和类相关的属性或方法时,可以使用类方法,第一个参数约定名为cls,它代表的是当前类相关的信息的对象(类本身也是一个对象,有的地方也称之为类的元数据对象),通过这个参数我们可以获取和类相关的信息并且可以创建出类的对象,深入了解可以搜索黑马程序员视频库,里面有很多免费的软件测试教程

5.python 类当函数如何实例化

可以把类当做参数传入到函数里,在函数里进行实例化。如下所示。

把类A当做参数传入get_instance_from_class。在get_instance_from_class中对A进行实例化,获得其实例,并返回。

class A:

def __init__(self):

print "I am a A instance."

def print_myself(self):

print "print myself."

def main():

def get_instance_from_class(a):

return a()

a = get_instance_from_class(A)

a.print_myself()

if __name__=="__main__":

main()

6.关于python动态添加属性和方法的意义

通过对象的实例,在外部为其添加属性,这种做法应该是很少见的。

原因很简单:破坏封装。虽然Python可以做到,但并不代表随意使用这种做法是妥当的。

添加的属性可以和原有的组合使用的,有回答已经给出了例子。我觉得有必要提一下self或者说方法的第一个参数是什么。

图片可以看出,self其实不像C++或Java中的this。其实它只是个名字,是个参数。

你完全可以取任何合法的变量名。当然,不建议使用self以外的变量名。

其次,self实际上就是实例的引用,和实例化并赋值到t的对象是同一个。这一定程度上可以解释为什么外部可以为实例创建属性。

因为在__init__方法中通过self创建属性(self.val = 0)和通过外部引用创建属性(t.val = 0)没有本质区别。至于“通过类创建属性”,这种做法是可以达到共有的:需要注意的是,通过实例为类属性赋值[7],会“遮盖”类属性。

即,赋值只是为实例的属性赋值,而未改动类的属性。需要改动类属性的话,应该使用类名的方式。

感兴趣的话可以查查Python的Mixin,这是通过动态继承添加属性和方法的做法。

7.python中,如何在初始化实例时,动态为其添加属性

代码看起来没有问题。如果在python3上不能用,应该也只需要小小的调整。原则上应该跑得通。

不过话说回来,这样的技巧通常在python里用不上。因为python的强大并不是因为它的面向对象属性。

而且这些写代码的可读性也较差。 python的强大在于它通用,它与C的良好结合,最重要的是它是“脚本”。 可以动态的做任何事情,既然它的动态很强大,你就不需要写这样的代码。

直接这样

s1= AnyClass()

s1.any_variable = some_value

这样足够了。因为python可以自动给未知的变量,增加一个内部属性。所以我经常写下面的这样的代码

class Config:

pass

conf = Config()

conf.mysql_ip = "127.0.0.1"这样就可以了

8.Python中的类为什么要实例化为一个对象才能使用

打个比方:

class 人类(object):

def __init__(self,性别,年龄,姓名等等):

self.性别=性别

self.年龄=年龄

self.姓名=姓名

def 说话(self,要说的话):

print(要说的话)

小明=人类(男,3岁,小明)

小明.说话('你好!')

类就好比是一类事物的抽象,是一个模板,拥有这一类事物的属性和功能。但是对于“人类”这个类来说,每个人的属性和要做的事又是不一样的,所以需要实例化,实例对象就是“人类”这个类的具体对象,后续就通过“小明”这个实例对象进行操作。

转载请注明出处代码入门网 » python动态实例化对象

资讯

pythonraise用法(python中可以使用if作为变量名吗)

阅读(2)

本文主要为您介绍pythonraise用法,内容包括python中可以使用if作为变量名吗,Python新手,Python中except的用法和作用是什么?请指教,python当中的迭代器如何使用?举例说明,谢谢。不可以,if为python保留的字符下面的列表显示了在 Python 中的

资讯

sparkpythonhbase(有没有Python写的spark连接Hbase的例子)

阅读(3)

本文主要为您介绍sparkpythonhbase,内容包括有没有Python写的spark连接Hbase的例子,如何提高python写hbase的性能,spark读hbaseparquet哪个快。博主项目实践中,经常需要用Spark从Hbase中读取数据。其中,spark的版本为1.6,hbase的版本为0.98。

资讯

python文字编码转换(python如何将乱码转成汉字)

阅读(2)

本文主要为您介绍python文字编码转换,内容包括python字符编码转换,python如何将乱码转成汉字,python编码转换。python2与python3稍微有点区别2、python2中默认的字符编码格式都是unicode,在字符串前加u,表示unicode

资讯

python相除取整数(python为什么算除法自动取整了)

阅读(2)

本文主要为您介绍python相除取整数,内容包括python2.7.12中如何引用模块做整数相除,python2.7.12引用模块做整数除法,python除数向上取整怎么写,就是0.3取12.6取3这种,我5/10得到。在2.x版本都是这样,会自动取整。在3.x版本以上改了,结果保留

资讯

pythoncondapip(pip和conda到底有什么不一样)

阅读(2)

本文主要为您介绍pythoncondapip,内容包括pip和conda到底有什么不一样,pip和conda到底有什么不一样,pythonpip是什么。在python的世界里也浸淫多年了,我们早已习惯有 pip ,easy_install 和virtualenv的世界,但是这些

资讯

python绘制波形图(matplotlib怎样绘制波形图)

阅读(2)

本文主要为您介绍python绘制波形图,内容包括matplotlib怎样绘制波形图,matplotlib怎样绘制波形图,python问题求解我现在通过编程生成一个波形文件,怎么获取第一秒之。可以选择ActivePython,然后用命令 pypm -g install matplotlib安装模块。

资讯

ugpython(python和activepython)

阅读(1)

本文主要为您介绍ugpython,内容包括Python、Ruby、Java、C++、UG有法语、德语、俄语版本的吗?,pythongraphtool怎么使用,python和activepython。activepython是红帽子的那家公司自己定制的。 python通常是指c-python,就是说用C语言为主写的

资讯

阿里云python3(阿里云虚拟主机可以部署python代码吗)

阅读(2)

本文主要为您介绍阿里云python3,内容包括阿里云虚拟主机可以部署python代码吗,如何在“阿里云+Wdcp”上面搭建Python环境,各位大神,Python怎么调用阿里云API。一 正确的打开姿势1.按win+r然后输入cmd2.切换到程序所在的目录3.输入python 程

资讯

python解析url编码(url编码问题在python中怎么解决)

阅读(2)

本文主要为您介绍python解析url编码,内容包括url编码问题在python中怎么解决,url编码问题在python中怎么解决,Python3如何对url解码?。最近在抓取一些js代码产生的动态数据,需要模拟js请求获得所需用的数据,遇到对url进行编码和解码的问题,就

资讯

python绑定ip(python怎样获取连接的IP的设备信息)

阅读(2)

本文主要为您介绍python绑定ip,内容包括如何使用python语言封锁或开放指定的IP?,在使用python的socket模块编程的时候,使用下面哪个方法来绑定本地,python中os.system中IP地址的用法。以前是有这样的工具,它会通过常用协议去刺探设备类型。

资讯

python调试输出(如何进行Python调试器调试)

阅读(2)

本文主要为您介绍python调试输出,内容包括如何进行Python调试器调试,怎么设置pycharm的pythonconsole输出界面,调试python代码的方法。PyDev 就能显示出一个超链接,这样您可以在导入库或函数的源代码之间导航。请注意,为了在您自己的源代码中

资讯

pythonmaxindex(python中multiindex什么意思)

阅读(2)

本文主要为您介绍pythonmaxindex,内容包括Python中的index一般是什么意思,怎么个用法?,python中multiindex什么意思,python中multiindex什么意思。Python 中多层级数据的生成与索引方法基于 Pandas 和 Numpy 中的一些功能,首先我们需要导入