在Python类中执行方法
我想在一个叫做 MyClass
的类里调用一个方法,并获取它返回的值。
class MyClass:
def __init__(self):
print " Class Initialized"
def gather_path(self):
self.tld_object = Tld.objects.get(id=3,FKToClient=User.pk)
return self.tld_object
我该怎么做才能在 Python 解释器中导入我的类,然后返回 self.tld_object
的值呢?
我导入的方式是:
from MyApp.MyClass import gather_path()
我知道这很基础——我对 Python 的面向对象编程还比较陌生。
那么我该怎么调用这个方法,才能在 gather_path()
方法中返回 self.tld_object
的值呢?
1 个回答
4
这要看你想做什么,但通常来说,导入你的类的代码看起来会是这样的:
from MyApp import MyClass
my_instance = MyClass()
value = my_instance.gather_path()
现在,value
变量将包含 tld_object 的值。
如果你不想创建 MyClass
的实例就调用 get_path()
,你需要把 get_path()
定义成一个类方法或静态方法。
从你的例子来看,不太清楚你是否需要设置 self.tld_object,因为你只是从 gather_path() 返回它,除非其他方法在后台依赖这个状态。不过如果确实需要的话,最好在 __init__
中声明它,即使你把它设置为 None。或者,如果所有 MyClass 的实例都要使用相同的 tld_object 值,你可以把它设为类变量,并在任何方法外部声明,像这样:
class MyClass:
tld_object = Tld.objects.get(id=3,FKToClient=User.pk)
def gather_path(self):
return self.tld_object
不太确定这些内容与你的需求有多相关,从你给的例子中有点难判断。如果我是根据你到目前为止说的内容来写这个,我会这样做:
class MyClass:
def __init__(self):
self.tld_object = Tld.objects.get(id=3,FKToClient=User.pk)
# Maybe raise an exception or something if self.tld_object doesn't get set right
# Example of how to access tld_object from another method
def print_tld_object(self):
print self.tld_object
如果你需要从类外访问 tld_object,你可以在其他模块中这样做:
from MyApp import MyClass
my_instance = MyClass()
tld = my_instance.tld_object