AttributeError: 'builtin_function_or_method' object has no attribute 'replace'

attributeerror, python, string

Solution

You need to call the `str.lower` method by placing `()` after it:

first=first.lower()
second=second.lower()

Otherwise, `first` and `second` will be assigned to the function object itself:

>>> first = "ABCDE"
>>> first = first.lower
>>> first
<built-in method lower of str object at 0x01C765A0>
>>>
>>> first = "ABCDE"
>>> first = first.lower()
>>> first
'abcde'
>>>

Problem

When I try to use this in my program, it says that there's an attribute error ``` 'builtin_function_or_method' object has no attribute 'replace' ``` but I don't understand why. ``` def verify_anagrams(first, second): first=first.lower second=second.lower first=first.replace(' ','') second=second.replace(' ','') a='abcdefghijklmnopqrstuvwxyz' b=len(first) e=0 for i in a: c=first.count(i) d=second.count(i) if c==d: e+=1 return b==e ```

Original source