이 점에 대해 알고 이해해주세요. 나는 수업을 이해하려고하는 아주 간단한 프로그램을 만들었습니다.Python TypeError : 'str'객체를 호출 할 수 없습니다.
class One(object):
def __init__(self, class2):
self.name = 'Amy'
self.age = 21
self.class2 = class2
def greeting(self):
self.name = raw_input("What is your name?: ")
print 'hi %s' % self.name
def birthday(self):
self.age = int(raw_input("What is your age?: "))
print self.age
def buy(self):
print 'You buy ', self.class2.name
class Two(object):
def __init__(self):
self.name = 'Polly'
self.gender = 'female'
def name(self):
self.gender = raw_input("Is she male or female? ")
if self.gender == 'male'.lower():
self.gender = 'male'
else:
self.gender = 'female'
self.name = raw_input("What do you want to name her? ")
print "Her gender is %s and her name is %s" % (self.gender, self.name)
Polly = Two()
Amy = One(Polly)
# I want it to print
Amy.greeting()
Amy.buy()
Amy.birthday()
문제 CODE
Polly.name() # TypeError: 'str' object is not callable
Two.name(Polly)# Works. Why?
왜 폴리 작동하지 클래스 인스턴스의 메소드를 호출합니까? 나는 꽤 길을 잃었다. 내가 http://mail.python.org/pipermail/tutor/2003-May/022128.html 및 기타 Stackoverflow 질문을 닮은 보였지만, 나는 그것을 얻지 않을거야. 정말 고맙습니다.
이 명확한 설명을 주셔서 대단히 감사합니다. 나는 관련 질문이있다. 초기 이름을 설정하고 raw_input을 통해 이름을 설정하지 않으려면 어떻게해야합니까? 'self.name = name self.gender = gender'와'init __ (self, name, gender)'를 설정하고'Polly = Two (name, gender)'를 통해 호출하면 에러가 발생합니다. 여기서해야 할 일에 대해 불분명하다. – user1186742
나는 그것을 얻었을지 모른다라고 생각해라. 나는 그 인스턴스 변수를 __init__보다는 메서드에 넣거나 그냥 빈 문자열로 설정한다. – user1186742
클래스 내에서'raw_input' 작업을하지 마십시오; 별도의 책임. 사람들은 자신의 이름이 무엇인지 알아낼 책임이 없습니다. 그들의 이름은 출생, 어, 창조시 지정됩니다. –