[英]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.