相关疑难解决方法(0)

获取实例的类名?

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

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

python introspection instanceof python-datamodel

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

在Python中输入安全性

我已经定义了一个Vector有三个属性变量类:x,yz.坐标必须是实数,但没有什么可以阻止人们做以下事情:

>>> v = Vector(8, 7.3, -1)
>>> v.x = "foo"
>>> v.x
"foo"
Run Code Online (Sandbox Code Playgroud)

我可以像这样实现"类型安全":

import numbers

class Vector:
    def __init__(self, x, y, z):
        self.setposition(x, y, z)

    def setposition(self, x, y, z):
        for i in (x, y, z):
            if not isinstance(i, numbers.Real):
                raise TypeError("Real coordinates only")

        self.__x = x
        self.__y = y
        self.__z = z

    @property
    def x(self):
        return self.__x

    @property
    def y(self):
        return self.__y

    @property
    def z(self):
        return self.__z
Run Code Online (Sandbox Code Playgroud)

......但这似乎不是Pythonic.

建议?

python type-safety

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

Python:如何重构循环导入

我有一个你可以做的事情,engine.setState(<state class>)它将实例化你给它的类类型并开始运行新状态.

SelectFileState有一个按钮可以转到NewFileState,然后NewFileState有一个按钮可以返回SelectFileState.

现在,在开始时SelectFileState,我正在导入NewFileState(所以我可以在课堂上做engine.setState(NewFileState).在开始时NewFileState,我也在导入SelectFileState(所以我以后可以回去SelectFileState).

但是,这会创建一个循环导入,如其他一些帖子中所述.有人说循环进口是指标设计不好,应该重构.

我知道我可以SelectFileState在我需要使用它之前通过导入来解决这个问题,但我宁愿以正确的方式做事并重构它.

现在我想知道..你怎么重构那个?

谢谢.

编辑: Pydsigner建议我将两个文件合并为一个,因为它们彼此非常相关.但是,我不能将具有循环依赖关系的每个状态放入一个文件中,因此必须有一个更好的方法.有任何想法吗?

2编辑: 我现在通过不使用from x import y语法来绕过这个问题,而只是做import x.这不是一个更好的解决方案,我想知道解决这种事情的"Pythonic"方法.只是将文件合并在一起不能永远修复.

代码:

SelectFileState

from states.state import State
from states.newfilestate import NewFileState

from elements.poster import Poster
from elements.label import Label
from elements.button import Button
from elements.trifader import TriFader

import glob
import os

class SelectFileState(State):
    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python refactoring

8
推荐指数
1
解决办法
1394
查看次数