defining method of class in if statement

James Urban

I'm trying to create a class that will create objects with different methods based on an input. The point of this is to avoid using an if statement every time the method is called.

Below is the code I thought would work, but isn't working.

class Food:
    def __init__(self,food_type):
        self.food_type = food_type

        if food_type == 'cookie':
            print 'this is a cookie'
            def is_awesome(self):
                print "is awesome"
        else:
            print 'this is not a cookie'
            def is_awesome(self):
                print "not awesome"

Oreo = Food('cookie')
Oreo.is_awesome()

The code doesn't error on the def is_awesome(self) statement, but instead the Oreo.is_awesome() line raises the error:

"AttributeError: Food instance has no attribute is_awesome".

Is there a better way to make objects with different methods? and is there a reason why the method is_awesome isn't callable by 'Oreo.is_awesome'?

dm03514

Is there a better way to make objects with different methods?

Yes a way that works :) Polymorphism is a great candidate.

class Food:
  def is_awesome(self):
    print 'not awesome'

class Cookie(Food):
  def is_awesome(self):
    print 'is awesome'

and is there a reason why the method is_awesome isn't callable by 'Oreo.is_awesome'?

Yes, it's not bound to the instance (conventionally called self) in any

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Java: Defining a generic method inside an anonymous class

Get defining class of unbound method object in Python 3

Defining all abstract method in one concrete class

Defining python class method using arguments from __init__

Swift protocol defining class method returning self

Defining an abstract method in a SQLAlchemy base class

Determine the defining class from within a method

Scala what is the difference between defining a method in the class instead on the companion object

Python a class method and defining a default value (if param is empty) and static method

Defining a javascript class Method as a constant

How to get the defining class of a bound method?

Is there any solution to handle Transactional by defining in Abstract Class of Concrete Method?

python method for defining indexing in a class (use of "[ ]")

Defining custom gradient as a class method in Tensorflow

Access Python class method with "with" statement

Wrong top statement declaration error when defining an implicit method

Error for defining class method as expression

Conditionally defining method for container class

How to get a method’s defining class’s name?

Serialize objects with inheritance by defining serialize method only in base class?

Python: re-defining a class method at runtime

Defining a class with a method

Calling a method in a class, in an if/elif statement

CDI producer method not working if defining class doesn't declare a scope

defining dict key with If statement

Defining a conditional statement as a variable

Defining a Class method vs Passing object as parameter to an Function in OOP

When defining class attributes, which method of writing is more "Pythonic"?

defining part of a method in a parent class without defining the return

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive