相关疑难解决方法(0)

获取实例的类名?

如果我从中执行此操作的函数是实例的类派生的基类,如何找出在Python中创建对象实例的类的名称?

想到也许检查模块可能在这里帮助了我,但它似乎没有给我我想要的东西.如果没有解析__class__成员,我不知道如何获取这些信息.

python introspection instanceof python-datamodel

1303
推荐指数
10
解决办法
83万
查看次数

如何在Python中访问当前执行的模块或类名?

我希望能够从导入的模块中动态检索当前执行的模块或类名.这是一些代码:

foo.py:

def f():
    print __name__
Run Code Online (Sandbox Code Playgroud)

bar.py:

from foo import f

def b(): f()
Run Code Online (Sandbox Code Playgroud)

这显然不起作用__name__,因为包含该功能的模块的名称.我希望在foo模块内部访问的是当前正在使用的执行模块的名称foo.因此,在上面的情况下,它将是bar但如果导入任何其他模块foo我想foo动态地访问该模块的名称.

编辑:inspect模块看起来非常有前途,但它并不完全是我想要的.我希望的是我可以访问的某种全局或环境级变量,它包含当前执行模块的名称.并不是说我不愿意遍历堆栈来查找信息 - 我只是认为Python可能已经暴露了这些数据.

编辑:这是我试图使用它的方式.我有两个不同的Django应用程序,它们都需要将错误记录到文件中.让我们说它们被称为"AppOne"和"AppTwo".我还有一个地方可以记录这些文件:" /home/hare/app_logs".在任何给定点的每个应用程序中,我希望能够导入我的记录器模块并调用将日志字符串写入文件的日志功能.但是,我想要做的是创建一个目录,app_logs该目录是当前应用程序的名称("AppOne"或"AppTwo"),以便每个应用程序的日志文件将进入各自的日志记录目录.

为了做到这一点,我认为最好的办法是对记录器模块能够获得某种形式的全局变量,它表示当前应用程序的名称,因为它是负责了解父日志目录的位置,并创建应用程序的日志目录,如果它还不存在.

python module

45
推荐指数
8
解决办法
7万
查看次数

如何使 __str__ 或 __repr__ 返回当前类的名称?

我有这个代码:

class Employee:
    def __init__(self, name, pay, gender):
        self.name = name
        self.pay = pay
        self.gender = gender

    def add_raise(self):
        self.pay = int(self.pay*1.10)

    def __str__(self):
        if self.gender == "Female" or self.gender == "female":
            return f"{__class__.__name__} name: {self.name}, and she earns {self.pay} Pound"
        else:
            return f"{__class__.__name__} name: {self.name}, and he earns {self.pay} Pound"

    def __repr__(self):
        if self.gender == "Female" or self.gender == "female":
            return f"{__class__.__name__} name: {self.name}, and she earns {self.pay} Pound"
        else:
            return f"{__class__.__name__} name: {self.name}, and he earns {self.pay} Pound" …
Run Code Online (Sandbox Code Playgroud)

python class python-3.x python-class

3
推荐指数
1
解决办法
1645
查看次数