如果有类似的话:
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__()
方法?
答案 0 :(得分:1)
你可以试试这个:
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__
中添加默认值,如果用户没有在对象声明中传递参数,那么它将采用默认值。
答案 1 :(得分:0)
如果您不想/不能更改类的代码,请记住Python对象的属性都是公共的。因此,除非您担心在url
进行任何进一步处理之前更改__init__()
,否则您可以执行以下操作:
>>> server = MyFunObject()
>>> server.url = 'http://www.google.com'
>>> print(server.url)
'http://www.google.com'