[英]How to override an attribute in a class' __init__ method?
如果有類似的課程:
class MyFunObject(object)
def __init__(self):
self.url = "http://myurl.com"
當我實例化該類時,是否可以以某種方式覆蓋url
屬性?
如果我做:
server = MyFunObject(url="http://www.google.com")
我得到:
TypeError: __init__() got an unexpected keyword argument 'url'
有沒有辦法覆蓋在類的__init__()
方法中定義的屬性?
您可以嘗試以下方法:
class MyFunObject(object):
def __init__(self, url="http://myurl.com"):
self.url = url
def Printurl(self)
print(self.url)
obj = MyFunObject("http://www.google.com")
obj.Printurl()
輸出:
http://www.google.com
如果假設:
obj1 = MyFunObject()
obj1.Printurl()
輸出:
http://myurl.com
說明:
由於您的函數調用具有關鍵字參數url
因此需要__init__
的參數。 如果用戶未在對象聲明中傳遞參數,則在__init__
添加默認值,則它將采用默認值。
如果您不想/不能更改類的代碼,請記住,Python對象的屬性都是公共的。 因此,除非您擔心在__init__()
任何進一步處理之前更改url
,否則可以執行以下操作:
>>> server = MyFunObject()
>>> server.url = 'http://www.google.com'
>>> print(server.url)
'http://www.google.com'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.