Per integrazione se faccio una sola classe con la FUNZIONE che gli passa il file mi funziona tutto:
ES:
codice:
import html

class HTMLNode(object):
    def __init__(self, tag, attr, content, closed=True):
        self.tag = tag
        self.attr = attr # dizionario degli attributi, se non ci
                         # sono, e' un dizionario vuoto
        self.content = content  # se tag = '_text_' contiene il testo,
                                # altrimenti una lista dei nodi figli
        self.closed = closed  # True se il nodo ha la chiusura


    def istext(self):    # per distinguere i nodi testo
        return self.tag == '_text_'


    def print_tree(self, level=0):
        '''Stampa l'albero mostrando la struttura tramite indentazione'''
        print '    '*level+str(self),
        if self.istext():
            print repr(self.content)
        else:
            print
            for node in self.content:
                node.print_tree(level+1)


    def __str__(self):
        '''Ritorna una rapprentazione testuale del nodo'''
        left, right = ('', '') if self.tag == '_text_' else ('<', '>')
        s = left+self.tag
        for k, v in self.attr.items():
            s += ' '+k+'="'+v+'"'
        return s + right


    def count(self):
        '''Ritorna il numero di nodi dell'albero'''
        cnt = 1
        if not self.istext():
            for node in self.content:
                cnt += node.count()
        return cnt




def ParsedHTML(htmlfile):
    '''Esegue il parsing HTML del file fhtml e ritorna la radice
    dell'albero di parsing'''
    with open(htmlfile, 'U') as f:
        root = html.parse(f.read(), HTMLNode)
    return root
###########################################################################




p = ParsedHTML('file03_01_in.html')
print p.print_tree()
print p.count()
perche' facendo al posto dlela funzione la seconda classe non va?