<__main__.myClass object at 0x000001CCDC46BD90> 而不是预期的字符串输出

<__main__.myClass object at 0x000001CCDC46BD90> instead of expected string output

写一个Pythonclass,里面有两个方法get_Stringprint_Stringget_String 应该接受来自用户的字符串,print_String 应该以大写形式打印字符串。

我的代码:

class myClass():
    def __init__(self, userInput = input("What is your name? ")):
        self.userInput = userInput
    def get_string(userInput):
        return userInput
    def print_string(userInput):
        output = userInput.upper()
        return output
print(myClass())
Terminal:
What is your name? Anthony
<__main__.myClass object at 0x000001CCDC46BD90>

应该是:

ANTHONY

您好,您可以稍微重新安排您的代码,以便方法读取输入,然后以所需格式打印出来:

class myClass():
    def __init__(self):
        self.userInput = None
    def get_String(self):
        self.userInput = input('What is your name? ')
    def print_String(self):
        print(self.userInput.upper())

# Instantiate the object
x = myClass()

# Read the name
x.get_String()

# Print the name
x.print_String()

# This prints:
#
# What is your name? Anthony
# ANTHONY

只需通过传递 self 参数修改您的 print_string 方法,然后使用 print_string() 方法调用。

class myClass():
    def __init__(self, userInput = input("What is your name? ")):
        self.userInput = userInput
    def print_string(self):
        output = self.userInput.upper()
        return output
print(myClass().print_string())

您似乎缺少基础知识 re: 类 in Python:

  1. 作业要求您使用 get_string 方法获取字符串,而不是在 __init__.
  2. 期间
  3. 你的 print_string 应该打印存储的字符串,它不应该要求用户传递一个新的字符串。
  4. 您没有尝试在代码中的任何位置将字符串转换为大写。

这是一个改进的版本:

class MyClass:
    def __init__(self):
        self.name = None

    def get_string(self):
        self.name = input("What is your name? ")

    def print_string(self):
        print(self.name.upper())


my_object = MyClass()
my_object.get_string()
my_object.print_string()