草庐IT

python - 如何在子类中使用 "hide"父类(super class)方法

我基本上想创建一个“隐藏”父类(superclass)方法的子类,这样它们就不会出现在dir()或hasattr()调用中并且用户不能给他们打电话(至少不能通过任何正常channel)。我也想用尽可能少的“魔法”来做到这一点。谢谢。 最佳答案 分别覆盖__dir__和__getattribute__方法应该可以解决问题。这几乎是在Python中执行此类操作的规范方法。尽管您是否真的应该这样做完全是另一回事。请参阅CustomizingAttributeAccess上的Python文档使用__dir__列出可用的属性(这不会影响实际的

python - 与父类(super class)同名的子类变量

是否有可能不发生覆盖?例如:classA:def__init__(self,name):self.name=nameclassB(A):def__init__(self,name):A.__init__(self,name)self.name=name+"yes"B类中的self.name有什么方法可以独立于A类中的,还是必须使用不同的名称? 最佳答案 用两个下划线作为名称前缀会导致名称重整,这似乎正是您想要的。例如classA:def__init__(self,name):self.__name=namedefprint_name

python - 使用多重继承时如何使用super来初始化所有父类

HowdoesPython'ssuper()workwithmultipleinheritance?我在看上面的问题/答案,把自己弄糊涂了53classFirst(object):54def__init__(self):55print"first"5657classSecond(First):58def__init__(self):59super(Second,self).__init__()60print"second"6162classThird(First):63def__init__(self):64print"third"6566classFourth(Second,Thir

android - super.onCreate(savedInstanceState);

我创建了一个Android应用程序项目,在MainActivity.java>onCreate()它正在调用super.onCreate(savedInstanceState)。作为初学者,谁能解释一下上面这行的目的是什么? 最佳答案 您所做的每个Activity都是通过一系列方法调用启动的。onCreate()是这些调用中的第一个。您的每一个Activity都直接扩展android.app.Activity或通过继承Activity的另一个子类。在Java中,当您从一个类继承时,您可以覆盖其方法以在其中运行您自己的代码。一个非常常

android - super.onCreate(savedInstanceState);

我创建了一个Android应用程序项目,在MainActivity.java>onCreate()它正在调用super.onCreate(savedInstanceState)。作为初学者,谁能解释一下上面这行的目的是什么? 最佳答案 您所做的每个Activity都是通过一系列方法调用启动的。onCreate()是这些调用中的第一个。您的每一个Activity都直接扩展android.app.Activity或通过继承Activity的另一个子类。在Java中,当您从一个类继承时,您可以覆盖其方法以在其中运行您自己的代码。一个非常常

python - 我是否正确使用 super() ?

我编写了一小段代码,因为我仍在尝试弄清楚使用super()的细节。为什么这个block会运行到这个TypeError?a=SecondClass()TypeError:__init__()takesexactly2arguments(1given)然后,SecondClass.meth()函数应该打印字符串,但我显然在概念上遗漏了一些东西。classFirstClass(object):def__init__(self,value):self.value=valueprintself.valueclassSecondClass(FirstClass):defmeth(self):sup

python - 无法登录在 django 管理后端创建的 super 用户

我正在尝试在django管理后端创建super用户,但不知何故我无法让他们登录。这是我的用户类,classUser(AbstractBaseUser,PermissionsMixin):email=models.EmailField(unique=True,max_length=255)mobile=PhoneNumberField(null=True)username=models.CharField(null=False,unique=True,max_length=255)full_name=models.CharField(max_length=255,blank=True,n

python - 当我调用 `super(some_cls)` 时会发生什么魔法吗?

调查时thisquestion,我遇到了单参数super的这种奇怪行为:调用super(some_class).__init__()在some_class(或其子类)的方法内部工作,但在任何地方调用时都会抛出异常否则。代码示例:classA():def__init__(self):super(A).__init__()#doesn'tthrowexceptiona=A()super(A).__init__()#throwsexception抛出的异常是Traceback(mostrecentcalllast):File"untitled.py",line8,insuper(A).__i

python - 如何在可等待的子类中使用 super()?

我想通过子类化现有的可等待类来为其添加新功能。让我们从一个非常简单的基类开始创建对象,这些对象在短暂休眠后异步返回99。子类应该只向结果添加+1。我找不到使用super()来引用基类的正确方法。importasyncioclassR99:def__await__(self):loop=asyncio.get_event_loop()fut=loop.create_future()loop.call_later(0.5,fut.set_result,99)returnfut.__await__()classR100(R99):asyncdefadd1(self):v=awaitR99()

python - 类装饰器、继承、super() 和最大递归

我正在尝试找出如何在使用super()的子类上使用装饰器。由于我的类装饰器创建了另一个子类,装饰类在更改传递给super(className,self)className时似乎阻止了super()的使用。下面是一个例子:defclass_decorator(cls):class_DecoratedClass(cls):def__init__(self):returnsuper(_DecoratedClass,self).__init__()return_DecoratedClassclassBaseClass(object):def__init__(self):print"class: