Convert the perl code to python, dont add comments
''' 
my $logger = SD::Util::Log->get_logger(CLASS);
my @calculated_fields = qw/net_daily_finance_income_cost
daily_finance_income_cost
debit_finance_income_cost
daily_finance_income
net_debit
daily_finance_cost
interest/;
my @input_fields = qw/financing_terms/;
my @other_fields = qw/calculation_status calculation_failed name/;
CLASS->mk_accessors(@calculated_fields, @input_fields, @other_fields);

sub new {
my $class  = shift;
my $params = shift;
unless (defined $params and defined $params->{name}) {
$logger->error('Invalid name specified');
return undef;
}
$class = ref $class || $class;
my $self = bless {}, $class;
$self->name($params->{name});
return $self;
}

sub Clone {
my $self = shift;
my $clone;
$clone->{$_} = clone ($self->$_) for (@input_fields, @other_fields);
return bless $clone, CLASS;
}

sub init {
my $self = shift;
my $object = shift;
unless ($self->set_object($object)) {
$logger->error('Unable init the calculator with the object');
return +FALSE;
}
foreach my $attr (@input_fields) {
eval {
$self->$attr($object->$attr);
} ; if($@) {}
}
unless ($object->register_attribute($self, \@calculated_fields)) {
$logger->error('Failed to register the calculator with object');
return +FALSE;
}
$self->calculation_status(+FALSE);
$self->calculation_failed(+FALSE);
return +TRUE;
}

sub do {
my $self   = shift;
my $object = $self->get_object();
unless(defined $object and defined $self) {
$logger->error("Invalid business object passed");
return +FALSE;
}
$logger-> I want the entire output in JSON format.
user