Python Forum
TypeError: Not supported between instances of 'function' and 'int'
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TypeError: Not supported between instances of 'function' and 'int'
#5
I think you can refactor this to avoid repetitions
import variables
import math
 
class Calculator(object):   # common bits for both genders
    age = variables.age
    diabetes = variables.diabetes
 
    @property
    def a(self):
     a = 11.1122-0.9119*(math.log(variables.systolic_blood_pressure))-0.2767*(variables.smoking)-0.7181*(math.log(variables.cholesterol_ratio(variables.total_cholesterol,variables.HDL_cholesterol)))-0.5865*(variables.LVH)
     return a
 
    @property
    def mu1(self):
        mu1 = 4.4181 + self.m
        return mu1

    def risk(self):
        sigma = math.exp(-0.3155-0.2784 * self.m)
        mu2 = (math.log(5) - self.mu1)/sigma
        p = 1-math.exp(-math.exp(mu2))  #p is the five year risk i.e. the intended output of the function
        return round(p*100,2)

class MaleCalculator(Calculator):
    @property
    def m(self):
        return  self.a-1.4792*(math.log(self.age))-0.1759*(self.diabetes)

class FemaleCalculator(Calculator):
    @property
    def m(self):
        return  self.a-5.8549+1.8515*(
            (math.log(self.age/74))**2)-0.3758*(self.diabetes)
 
  #calculates risks for male
def risk_calculator_male():
    return MaleCalculator().risk()
 
def risk_calculator_female():
    return FemaleCalculator().risk()
 
def genderassignment():   #prompts user to enter gender and assigns correct calculator
        gender = input("Please enter gender, m for male and f for female. ")
 
        if gender == 'm':
          print(f"Your five year risk is: {risk_calculator_male()}% .")
 
        elif gender == 'f':
          print(f"Your five year risk is: {risk_calculator_female()}%. ")
 
        else:
            print("Does not compute!")
            return genderassignment()
genderassignment()
Reply


Messages In This Thread
RE: TypeError: Not supported between instances of 'function' and 'int' - by Gribouillis - Nov-25-2019, 04:41 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Using curve_fit to optimize function (TypeError) Laplace12 4 2,561 Aug-30-2021, 11:15 AM
Last Post: Larz60+
  [Solved] TypeError when calling function Laplace12 2 2,936 Jun-16-2021, 02:46 PM
Last Post: Laplace12
  Sort Function: <' not supported between instances of 'float' and 'tuple' quest 2 8,145 Apr-30-2021, 07:37 PM
Last Post: quest
Exclamation TypeError: '>=' not supported between instances of 'int' and 'str' helpme1 11 8,891 Mar-11-2021, 11:13 AM
Last Post: helpme1
  Type error: '>' not supported between instances of 'NoneType' and 'int' spalisetty06 1 10,523 Apr-29-2020, 06:41 AM
Last Post: buran
  TypeError: '<' not supported between instances of 'str' and 'int' Svensation 5 8,914 Jan-20-2020, 08:12 PM
Last Post: buran
  TypeError: '>=' not supported between instances of 'str' and 'int' AsadZ 8 10,666 Aug-20-2019, 11:45 AM
Last Post: ThomasL
  '>' not supported between instances of 'str' and 'int' graham23s 2 4,022 May-11-2019, 07:09 PM
Last Post: micseydel
  Newbie Question re "TypeError: '<' not supported between instances of 'list' and 'int sr12 8 13,159 Apr-11-2019, 08:19 PM
Last Post: sr12
  '<' not supported between instances of 'str' and 'int' jayaherkar 1 7,982 Apr-09-2019, 03:25 PM
Last Post: perfringo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020