對不起,但我不久前才開始學習 python,我被困在這個程式代碼中,我無法讓它像它應該的那樣作業。
class Dog():
def __init__(self,name,breed,owner):
self.name = name
self.breed = breed
self.owner = owner
class Person():
def __init__(self,name):
self.name = name
mick = Person("Mick Jagger")
dog = Dog("Stanley","French Bulldog",mick)
print(dog.owner)
我想得到狗的主人名字,但我得到的只是:
= RESTART: C:/Coding Practice/Object Oriented Programming.py =
<__main__.Person object at 0x000002C5DFB02050>
幫助將不勝感激。
uj5u.com熱心網友回復:
您可以使用__str__或__repr__以更易于閱讀的格式獲取物件的所有屬性。
__str__(讀作“dunder(雙下劃線)字串”)和__repr__(讀作“dunder-repper”(表示“表示”))都是基于物件狀態回傳字串的特殊方法。
class Dog():
def __init__(self,name,breed,owner):
self.name = name
self.breed = breed
self.owner = owner
def __str__(self):
return str(self.__class__) '\n' '\n'.join(('{} = {}'.format(item, self.__dict__[item]) for item in self.__dict__))
class Person():
def __init__(self,name):
self.name = name
def __str__(self):
return str(self.__class__) '\n' '\n'.join(('{} = {}'.format(item, self.__dict__[item]) for item in self.__dict__))
mick = Person("Mick Jagger")
dog = Dog("Stanley","French Bulldog", mick)
print(dog.owner)
字串
如果您列印一個物件,或者將其傳遞給 format、str.format 或 str,則如果定義了str方法,則將呼叫該方法,否則 將使用repr 。
代表
repr方法由內置函式 repr 呼叫,當它計算回傳物件的運算式時,它會在你的 python shell 上回顯。
uj5u.com熱心網友回復:
當您分配self.owner = ownerself.owner 存盤所有者物件的參考時,您應該通過提及屬性來訪問名稱值self.owner = owner.name。
class Dog():
def __init__(self,name,breed,owner):
self.name = name
self.breed = breed
self.owner_name = owner.name
class Person():
def __init__(self,name):
self.name = name
mick = Person("Mick Jagger")
dog = Dog("Stanley","French Bulldog",mick)
print(dog.owner_name)
uj5u.com熱心網友回復:
您應該向 Person 類添加__repr__和方法。__str__或者只是__repr__。
class Person:
def __init__(self,name):
self.name=name
def __repr__(self)
return str(self.name)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496216.html
