簡體   English   中英

如何在類的__init__方法中重寫屬性?

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

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