학생의 이름을 인쇄하려고 하는 것이 잘못된 것은 무엇입니까? (What is wrong with trying to print the name of the student?)


문제 설명

학생의 이름을 인쇄하려고 하는 것이 잘못된 것은 무엇입니까? (What is wrong with trying to print the name of the student?)

이것은 내 코드입니다. 학생 이름을 인쇄하려고 했지만 오류가 많이 발생했습니다. 내가 뭘 잘못했어? 감사합니다!

class Elev:
"""
Un elev are nume, cnp,clasa,
"""
def __init__(self,nume,cnp,clasa):
    self.nume=nume
    self.cnp=cnp
    self.clasa=clasa
def set_nume(self,nume):
    self.nume=nume
def get_nume(self):
    return self.nume
def set_clasa(self,clasa):
    self.clasa=clasa
def get_clasa(self):
    return self.clasa
def set_cnp(self,cnp):
    self.cnp=cnp
def get_cnp(self):
    return self.cnp
def merg(self):
    print("Merge la ore")
def __str__(self):
    return "%s"(self.nume)

이것은 내가 사용한 두 번째 클래스입니다.

class Student(Elev):
def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(self,nume,cnp)
def Vacanta(self):
    print("Nu ai restanta ai vacanta!!!!!")

여기에 클래스와 함수를 호출한 방법이 나와 있습니다.

def Main():
student=Student("Popescu Vasile",232423423,1)
print(student.get_nume())

Main()

오류는 다음과 같습니다.

Traceback (most recent call last): File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 36, in <module> Main() File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 34, in Main print(student.get_nume()) File "D:/Facultate/Python/tema_mostenire/tema_mostenire.py", line 24, in str return "%s"(self.nume) TypeError: 'str' object is not callable

참조 솔루션

방법 1:

Your __str__ method is missing the % operator:

def __str__(self):
    return "%s" % (self.nume)

If you used proper style, with a space between operators, this would have been easier to see.

방법 2:

From the error you got ,it looks like the problem was the last function of the class.See below:

class Elev:
 "" Un elev are nume, cnp,clasa, """
 def __init__(self,nume,cnp,clasa):            self.nume=nume self.cnp=cnp self.clasa=clasa 
def set_nume(self,nume): self.nume=nume 
    def get_nume(self): 
    return self.nume 
    def set_clasa(self,clasa): self.clasa=clasa 
    def get_clasa(self): 
    return self.clasa 
    def set_cnp(self,cnp): 
    self.cnp=cnp 
    def get_cnp(self): 
    return self.cnp 
    def merg(self): 
    print("Merge la ore") 
    def __str__(self):
    return "%s" %  (self.nume) #fixed

방법 3:

Beside the indentation there's two issues with your code:

def __str__(self):
    return "%s"(self.nume)

Above is not valid Python code, you can either add % operator as Daniel suggested or you can just modify it to return the name:

def __str__(self):
    return self.nume

The second issue is with the way you call parent class constructor here:

def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(self,nume,cnp)

When super is called without parameters you don't need to supply self parameter but you need to supply all three other parameters that parent expects:

def __init__(self,nume,cnp,an):
    self.an=an
    super().__init__(nume,cnp, 'foo')

(by MaryDaniel RosemanTaufiq Rahmanniemmi)

참조 문서

  1. What is wrong with trying to print the name of the student? (CC BY‑SA 2.5/3.0/4.0)

#Python #OOP






관련 질문

Python - 파일 이름에 특수 문자가 있는 파일의 이름을 바꿀 수 없습니다. (Python - Unable to rename a file with special characters in the file name)

구조화된 배열의 dtype을 변경하면 문자열 데이터가 0이 됩니다. (Changing dtype of structured array zeros out string data)

목록 목록의 효과적인 구현 (Effective implementation of list of lists)

for 루프를 중단하지 않고 if 문을 중지하고 다른 if에 영향을 줍니다. (Stop if statement without breaking for loop and affect other ifs)

기본 숫자를 10 ^ 9 이상으로 늘리면 코드가 작동하지 않습니다. (Code fails to work when i increase the base numbers to anything over 10 ^ 9)

사용자 지정 대화 상자 PyQT5를 닫고 데이터 가져오기 (Close and get data from a custom dialog PyQT5)

Enthought Canopy의 Python: csv 파일 조작 (Python in Enthought Canopy: manipulating csv files)

학생의 이름을 인쇄하려고 하는 것이 잘못된 것은 무엇입니까? (What is wrong with trying to print the name of the student?)

다단계 열 테이블에 부분합 열 추가 (Adding a subtotal column to a multilevel column table)

여러 함수의 변수를 다른 함수로 사용 (Use variables from multiple functions into another function)

리프 텐서의 값을 업데이트하는 적절한 방법은 무엇입니까(예: 경사하강법 업데이트 단계 중) (What's the proper way to update a leaf tensor's values (e.g. during the update step of gradient descent))

Boto3: 조직 단위의 AMI에 시작 권한을 추가하려고 하면 ParamValidationError가 발생합니다. (Boto3: trying to add launch permission to AMI for an organizational unit raises ParamValidationError)







코멘트