簡體   English   中英

為什么我沒有得到字符串但沒有值

[英]Why am I not getting the string but the None value

我是 python 的新手,所以這個問題可能看起來很傻。 我的代碼如下:

class University:
    
    def __init__(self):
        self.__university = None
        
    def get_university(self):
        return self.__university
    
    def add_university(self, university_string):
        self.__university = university_string
        
def main():
    print(University().add_university('Open University'))

main()

它即將到來 無,但我想獲得 output “開放大學”。 如何更改方法 add_university 或方法 get_university(self) 以便替換 self.__university 值? 提前致謝。

function 什么也不返回,這就是你得到 None 的原因。 在 add_university 之后調用 get_university 或在 add_university 中返回

做這個

def add_university(self, university_string):
    self.__university = university_string
    return self.__university

或這個

def main():
    u = University()
    u.add_university('Open University')
    print(u.get_university())

像這樣的工作:

class University:
    
    def __init__(self):
        self.__university = None
        
    def get_university(self):
        return self.__university
    
    def add_university(self, university_string):
        self.__university = university_string
        
    def __str__(self):
        return self.__university
        
    def __repr__(self):
        return self.__university
        
def main():
    u = University()
    u.add_university("Open University")
    print(u)

main()

當您嘗試print(University().add_university("Open University"))時,它總是打印None ,因為 add_university 不返回任何要打印的內容。 在沒有要打印的東西的情況下,您會得到None

例如,如果您將__university初始化為"Default University" ,它仍然會打印None 這很棘手,因為您認為__university正在被打印,它的值是None 給它一個變量名u並編寫print(u)將打印類似<__main__.University object at 0x7f15e3e344c0> ,這是 memory 中與u關聯的地址。 當您將University傳遞給它時,覆蓋__str__方法可以print其他內容,而不是使用打印地址的默認實現。 是一個類似的問題,詢問有關打印 object 的問題。 是對__str____repr__之間差異的一個很好、深入的回答,它們都基於 object 生成字符串。

答案(我的風格代碼):

@notun-pagol ,該代碼是完全錯誤的。 您在line 4中將其設置為None ,而您知道,您需要這樣做,並且與line 10中所做的相同:

class University:
  def __init__(self, university):
    self.university = university

  def get_university(self):
    return self.university

  def add_university(self, university_string):
    self.university = university_string

def main():
  print(University("Closed University ( Fake )").add_university('Open University'))

main()

片段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM