It looks correct. but a bit complicated to read.
I would do something like below:
import torch
import torch.nn as nn
import torchvision

def print_requires_grad(module):
    for i, child in enumerate(module.children()):
        print(i)
        for param in child.parameters():
            print(param.requires_grad)    

class model(nn.Module):
    def __init__(self, num_classes):   
        super().__init__()     
        original_model = torchvision.models.vgg16(pretrained=True)

        self.features = original_model.features
        for child in list(self.features.children())[:-8]:
            for param in child.parameters():
                param.requires_grad = False

        self.classifier = nn.Sequential(
            nn.Linear(number_of_features, 512),
            nn.Sigmoid(),
            nn.Linear(512, num_classes),
        )

    def forward(self, x):
            x = self.features(x)
            x = x.view(x.size(0), -1)
            x = self.classifier(x)
            return x