为了账号安全,请及时绑定邮箱和手机立即绑定

Python-<__ main __。MyClass对象位于0x0000000002B70E10>

Python-<__ main __。MyClass对象位于0x0000000002B70E10>

慕标琳琳 2021-03-14 12:09:54
我正在为我正在处理的项目使用第三方库(PySphere)。PySphere提供了一个简单的API与VMware进行交互。但是,这是一个普遍的问题,并非特定于此库。该库的简单用法是获取VM对象,然后对其执行各种操作:vm_obj = vcenter.get_vm_by_name("My VM")vm_obj.get_status()vm_obj.power_on()我想向vm_obj类添加一些方法。这些方法是特定于VM上使用的OS的,因此不值得将其提交回库。现在,我一直在这样做:set_config_x(vm_obj, args)这似乎很不可思议。我希望能够将我的方法添加到中vm_obj class,而无需直接修改第三方库中的类定义。
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

__main__是什么意思?

直接调用的脚本被视为__main__模块。可以与其他任何模块相同的方式导入和访问它。

自我参数传递了什么?

中包含的参考MyObject


查看完整回答
反对 回复 2021-03-29
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

__main__如果直接从命令行运行,则为当前模块的名称。如果要从另一个模块导入该模块import my_module,则将以该名称命名。因此,印刷品会说:

< my_module.MyClass object at 0x0000000002B70E10 >


查看完整回答
反对 回复 2021-03-29
?
潇湘沐

TA贡献1816条经验 获得超6个赞

第一的:


__main__表示运行该方法的类是正在运行的主文件-单击或键入到终端的文件是该类主持的文件。这就是为什么写是一个好习惯


if __name__ == "__main__":

    #do stuff

在您的测试代码上-这样可以保证您的测试代码仅在从最初调用的文件运行代码时才运行。这也是为什么您永远不要编写顶级代码的原因,尤其是如果您以后想要多线程的话!


自我是识别班级的关键词。每个方法都需要有第一个参数“ self”-注意,如果没有,则不会引发错误,您的代码只会失败。调用self.variable表示查找类变量,而不是局部变量(仅在该方法内)或全局变量(每个人都可以使用)。同样,调用self.methodName()会调用属于该类的方法。


所以:


class Foo: #a new class, foo

    def __init__( self ):

        #set an object variable to be accessed anywhere in this object

        self.myVariable = 'happy' 

        #this one's a local variable, it will dissapear at the end of the method's execution

        myVaraible = sad 

        #this calls the newMethod method of the class, defined below. Note that we do NOT write self when calling.

        self.newMethod( "this is my variable!" )


    def newMethod (self, myVariable):

        #prints the variable you passed in as a parameter

        print myVariable 

        #prints 'happy', because that's what the object variable is, as defined above

        print self.myVariable 


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号