python子类调用父类方法
⑴ python 中怎样调用父类方法
子类调用父类函数有以下方法:
直接写类名调用
用 super(type, obj).method(arg)方法调用。
在类定义中调用本类的父类方法,可以直接用super().method(arg)
1
2
3
4
5
6
7
8
9
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑵ 如何在Python中调用父类的同名方法
你好,请看下面的例子和说明:python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类初始化函数的。调用父类函数有以下方法:class A:def method(self, arg):pass class B(A):def method(self, arg):# A.method(self,arg) # 1# super(B, self).method(arg) #2super().method(arg) #31.直接写类名调用2.用super(type,obj).method(arg)方法调用。3.在类定义中调用本类的父类方法,可以直接super().method(arg).在代码中调用对象的父类的方法的示例:ob = B()super(B,ob).method(arg) #调用class B的父类class A的method。初始化中调用父类初始化方法示例:class B(A):
⑶ python继承父类 怎么引用
子类调用父类函数有以下方法:
直接写类名调用
用 super(type, obj).method(arg)方法调用。
在类定义中调用本类的父类方法,可以直接用super().method(arg)
1
2
3
4
5
6
7
8
9
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑷ python子类如何才能调用父类的方法
.直接写类名调用
2.用 super(type, obj).method(arg)方法调用。
3.在类定义中调用本类的父类方法,可以直接 super().method(arg).
在代码中调用对象的父类的方法的示例:
ob = B()super(B,ob).method(arg) #调用class B的父类class A的method。
初始化中调用父类初始化方法示例:class B(A):def __init__(self):super().__init__()
⑸ Python子类调用父类方法或子类定义的方法输出会多出个'None'
我觉得最佳的回答的是不对的, 在python中若是函数没有定义return的结果,则会默认返回一个none
deffunc():
a=1
b=2
a=func()
print(a)
>>>None
在官方文档中也有说明的,而你打印出none的原因就是因为你在类的方法
中直接打印了字符串没有返回值,将方法中的pring改成return即可
⑹ Python中如何使具有相同父类中的两个子类之间进行方法调用
子类调用父类函数有以下方法:
直接写类名调用
用 super(type, obj).method(arg)方法调用。
在类定义中调用本类的父类方法,可以直接用super().method(arg)
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) # 2
super().method(arg) # 3
⑺ python子类调用父类方法出现None
None是tell函数执行的结果, 因为它没有return所以返回值是None
class类名宜采用驼峰结构, 首字母应该大写
⑻ Python 子类继承父类后,可以调用父类中的函数吗
classax:
defbx(self):#函数定义要有括号,类方法最少要有一个参数
print'我出来了'
classcx(ax):
xxx='ssss'
dx=cx()#生成类实例要有括号
dx.bx()
⑼ python 子类调用父类中的方法的一个int值
这是类的继承问题。先说一下,对于python来说定义函数要用def来定义,没有这个关键字无法定义函数。
然后通常,如果父类中有调用self.a,那么这个就是类的属性,也就是说,子类中自然存在。直接在子类中直接调用即可,如果在父类中只定义了一个局部变量,那么子类是获取不到的。不过可以定义类方法,直接调用类方法获取你想要的值。
方法1.
classA:
defget_A(self):
self.a=1
print(self.a)
classB(A):
defget_B(self):#self不是python关键字,建议类方法用self作为第一个参数
self.get_A()
if__name__=='__main__':
b=B()
b.get_B()
#方法2
classA:
@classmethod
defget_A(cls):
a=1
returna
classB(A):
defget_B(self):#self不是python关键字,建议类方法用self作为第一个参数
print(A.get_A())
if__name__=='__main__':
b=B()
b.get_B()
⑽ python 子类怎么调用父类方法
两种方法解决:
- 第一种
class A:
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#这一行解决了问题
A.__init__(self)
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
第二种:
#父类需要继承object对象
class A(object):
def __init__(self):
self.namea="aaa"
def funca(self):
print "function a : %s"%self.namea
class B(A):
def __init__(self):
#这一行解决问题
super(B,self).__init__()
self.nameb="bbb"
def funcb(self):
print "function b : %s"%self.nameb
b=B()
print b.nameb
b.funcb()
b.funca()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS:让类A继承自object类,这样才能使用super函数,因为这是python的“新式类”支持的特性。当前的class和对象可以作为super函数的参数使用,调用函数返回的对象的任何方法都是调用超类的方法,而不是当前类的方法。
优劣:
- 方法一更直观,方法二可以一次初始化所有超类
- super函数比在超类中直接调用未绑定方法更直观,但是其最大的优点是如果子类继承了多个父类,它只需要使用一次super函数就可以。然而如果没有这个需求,直接使用A.init(self)更直观一些。