Python Object-Oriented Python Inheritance Super-Duper!

ryanosten
seal-mask
.a{fill-rule:evenodd;}techdegree
ryanosten
PHP Development Techdegree Student 27,943 Points

Getting "NameError: name 'settattr' is not defined" but code looks same as kenneth's

Here is my code:

import random

class Character: def init(self, name, **kwargs): self.name = name

    for key, value in kwargs.items():
        settattr(self, key, value)

class Thief(Character): sneaky = True

def __init__(self, name, sneaky=True,  **kwargs):
    super().__init__(name, **kwargs)
    self.sneaky = sneaky

def pickpocket(self):
    return self.sneaky and bool(random.randint(0, 1))

def hide(self, light_level):
    return self.sneaky and light_level < 10

Here is my traceback

from characters import Thief
ryan = Thief('Ryan', sneaky = False, clever = True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/treehouse/workspace/characters.py", line 14, in init
super().init(name, **kwargs)
File "/home/treehouse/workspace/characters.py", line 8, in init
settattr(self, key, value)
NameError: name 'settattr' is not defined

ryanosten
seal-mask
.a{fill-rule:evenodd;}techdegree
ryanosten
PHP Development Techdegree Student 27,943 Points
import random

class Character:
    def __init__(self, name, **kwargs):
        self.name = name

        for key, value in kwargs.items():
            settattr(self, key, value)

class Thief(Character):
    sneaky = True

    def __init__(self, name, sneaky=True,  **kwargs):
        super().__init__(name, **kwargs)
        self.sneaky = sneaky

    def pickpocket(self):
        return self.sneaky and bool(random.randint(0, 1))

    def hide(self, light_level):
        return self.sneaky and light_level < 10

from characters import Thief
ryan = Thief('Ryan', sneaky = False, clever = True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/treehouse/workspace/characters.py", line 14, in init
super().init(name, **kwargs)
File "/home/treehouse/workspace/characters.py", line 8, in init
settattr(self, key, value)
NameError: name 'settattr' is not defined

2 Answers

Jason Anders
MOD
Jason Anders
Treehouse Moderator 145,094 Points

Hey there,

It looks like it's just a small typo. You have settattr when it should be setattr, which is why it's throwing the NameError.

Should be fine once that's fixed up.

Nice work! :) :dizzy: