草庐IT

Python父类(super class)反射

如果我有Python代码classA():passclassB():passclassC(A,B):pass我有类C,有没有办法遍历它的父类(superclass)(A和B)?类似伪代码的东西:>>>magicGetSuperClasses(C)(,)一个解决方案似乎是inspectmodule和getclasstree函数。defmagicGetSuperClasses(cls):return[o[0]foroininspect.getclasstree([cls])iftype(o[0])==type]但这是实现目标的“Pythonian”方式吗? 最佳

Python父类(super class)反射

如果我有Python代码classA():passclassB():passclassC(A,B):pass我有类C,有没有办法遍历它的父类(superclass)(A和B)?类似伪代码的东西:>>>magicGetSuperClasses(C)(,)一个解决方案似乎是inspectmodule和getclasstree函数。defmagicGetSuperClasses(cls):return[o[0]foroininspect.getclasstree([cls])iftype(o[0])==type]但这是实现目标的“Pythonian”方式吗? 最佳

python - 为什么我们在通过 super 调用时必须使用 __dunder__ 方法而不是运算符?

为什么我们必须使用__getitem__而不是通常的操作符访问?classMyDict(dict):def__getitem__(self,key):returnsuper()[key]我们得到TypeError:'super'objectisnotsubscriptable.相反,我们必须使用super().__getitem__(key),但我从未完全理解为什么-究竟是什么阻止了super以允许运算符(operator)访问的方式实现?Subscriptable只是一个例子,我对__getattr__、__init__等也有同样的问题。docs试图解释原因,但我不明白。

python - 为什么我们在通过 super 调用时必须使用 __dunder__ 方法而不是运算符?

为什么我们必须使用__getitem__而不是通常的操作符访问?classMyDict(dict):def__getitem__(self,key):returnsuper()[key]我们得到TypeError:'super'objectisnotsubscriptable.相反,我们必须使用super().__getitem__(key),但我从未完全理解为什么-究竟是什么阻止了super以允许运算符(operator)访问的方式实现?Subscriptable只是一个例子,我对__getattr__、__init__等也有同样的问题。docs试图解释原因,但我不明白。

python - Django删除 super 用户

这可能是重复的,但我在任何地方都找不到问题,所以我会继续问:有没有一种从终端删除super用户的简单方法,可能类似于Django的createsuperuser命令? 最佳答案 没有内置命令,但您可以从shell轻松执行此操作:>pythonmanage.pyshell$fromdjango.contrib.auth.modelsimportUser$User.objects.get(username="joebloggs",is_superuser=True).delete() 关于p

python - Django删除 super 用户

这可能是重复的,但我在任何地方都找不到问题,所以我会继续问:有没有一种从终端删除super用户的简单方法,可能类似于Django的createsuperuser命令? 最佳答案 没有内置命令,但您可以从shell轻松执行此操作:>pythonmanage.pyshell$fromdjango.contrib.auth.modelsimportUser$User.objects.get(username="joebloggs",is_superuser=True).delete() 关于p

python调用父类方法的三种方式(super调用和父类名调用)

子类调用父类的方法的三种方式:父类名.方法名(self)super(子类名,self).父类方法名()super().父类方法名注意:super()通过子类调用当前父类的方法,super默认会调用第一个父类的方法(适用于单继承的多层继承如下代码:#自定义师傅类-古法classMaster(object):#方法defmake_cake(self):print("古法煎饼果子")#自定义师傅类-现代classSchool(object):#方法defmake_cake(self):print("现代煎饼果子")#自定义一个徒弟类classPrentice(Master,School):#方法de

python - super() 和@staticmethod 交互

super()不应该与静态方法一起使用吗?当我尝试类似的事情时classFirst(object):@staticmethoddefgetlist():return['first']classSecond(First):@staticmethoddefgetlist():l=super(Second).getlist()l.append('second')returnla=Second.getlist()printa我收到以下错误Traceback(mostrecentcalllast):File"asdf.py",line13,ina=Second.getlist()File"asd

python - super() 和@staticmethod 交互

super()不应该与静态方法一起使用吗?当我尝试类似的事情时classFirst(object):@staticmethoddefgetlist():return['first']classSecond(First):@staticmethoddefgetlist():l=super(Second).getlist()l.append('second')returnla=Second.getlist()printa我收到以下错误Traceback(mostrecentcalllast):File"asdf.py",line13,ina=Second.getlist()File"asd

python - 如何从孙子类调用 super 方法?

我正在处理一些具有3级类继承的代码。从最低级别的派生类,调用方法2的语法是什么级别的层次结构,例如supersuper电话?“中间”类没有实现我需要调用的方法。 最佳答案 嗯,这是一种方法:classGrandparent(object):defmy_method(self):print"Grandparent"classParent(Grandparent):defmy_method(self):print"Parent"classChild(Parent):defmy_method(self):print"HelloGrandp