相关疑难解决方法(0)

Python类继承对象

是否有任何理由要继承类声明object

我刚刚发现了一些代码,我找不到一个很好的理由.

class MyClass(object):
    # class code follows...
Run Code Online (Sandbox Code Playgroud)

python oop inheritance class object

1095
推荐指数
6
解决办法
29万
查看次数

如何(在运行时)检查一个类是否是另一个类的子类?

假设我有一套西装和四个西装子类:Heart,Spade,Diamond,Club.

class Suit:
   ...
class Heart(Suit):
   ...
class Spade(Suit):
   ...
class Diamond(Suit):
   ...
class Club(Suit):
   ...
Run Code Online (Sandbox Code Playgroud)

我有一个接收套装作为参数的方法,它是一个类对象,而不是一个实例.更确切地说,它可能只收到四个值中的一个:Heart,Spade,Diamond,Club.我怎样才能做出确保这样的事情的断言?就像是:

def my_method(suit):
   assert(suit subclass of Suit)
   ...
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 3.

python assert subclass

176
推荐指数
6
解决办法
9万
查看次数

如何获取模块中定义但未导入的所有类?

我已经看到了以下问题,但它并没有让我想到我想要的地方:如何在Python中获取当前模块中所有类的列表?

特别是,我不想要导入的类,例如,如果我有以下模块:

from my.namespace import MyBaseClass
from somewhere.else import SomeOtherClass

class NewClass(MyBaseClass):
    pass

class AnotherClass(MyBaseClass):
    pass

class YetAnotherClass(MyBaseClass):
    pass
Run Code Online (Sandbox Code Playgroud)

如果我使用clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)链接问题中的接受答案建议,它将返回MyBaseClass并且SomeOtherClass除了本模块中定义的3之外.

我怎么才能得到NewClass,AnotherClass而且YetAnotherClass

python introspection python-2.7

42
推荐指数
4
解决办法
2万
查看次数

如何检查变量是否为类对象

假设一个简单的类:

class MyClass(object):
    pass

.
.
.
m = MyClass
print type(m) # gets: <type 'classobj'>
# if m is classobj, how can i check a variable is class object?
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何检查变量是否为类对象?

简单的解决方案:

if str(type(m)) == "<type 'classobj'>":
    # do something
Run Code Online (Sandbox Code Playgroud)

但我认为至少有一种经典方法可以检查.

python class python-2.7

12
推荐指数
3
解决办法
2万
查看次数

如何递归打印变量的内容,包括数据和对象属性?

str()并且repr()可以用来打印一个变量的内容在python.但变量的内容可能非常复杂.该pprint库,作为PHPvar_dump()等价物报告,非常适合以易于阅读的格式显示数据:什么是Python的var_dump()的Python等价物?,Python中是否有一个函数来打印对象的所有当前属性和值?

但是,如果有数据对象([编辑]尚未实施__str____repr__)str(),repr()pprint只是给了他们的名字.我想要一个可以递归遍历对象属性的方法,正确地给出变量的整个表示.

某些功能(例如内置版)不应打印,因为它没用.该方法还应该能够处理诸如getattr抛出异常之类的问题.也许自定义迭代也可以像列表一样处理.


我在下面给了它一个镜头.并不是说它不起作用,但我确信没有考虑边缘情况,可能还有一些输出缺失的信息(例如区分元组/列表).我的意思是说,请分享替代方案:)

python debugging recursion var-dump

3
推荐指数
2
解决办法
2213
查看次数

如何在python模块中找到类的名称?

如果我导入一个模块:

import foo
Run Code Online (Sandbox Code Playgroud)

如何找到它包含的类的名称?

python

2
推荐指数
1
解决办法
221
查看次数