我認爲答案是否定的,但如果有機會,這會讓我的生活變得更輕鬆。請看下面的代碼:從Python中的str或unicode繼承以便在賦值後保留類實例時是否有可能?
class SchemaString(unicode):
_schema = dict()
def validate(self):
errors = []
# some validation function using class propertie _schema, not important
return sorted(list(set(errors)))
s = SchemaString("Hello")
e0 = s.validate()
我想的是,以下仍然有效:
s = "World"
e1 = s.validate()
>> AttributeError: 'str' object has no attribute 'validate'
因此,我的問題是,如果有可能仍然使用相同的對象之後,新的任務,這樣我仍然可以使用「驗證」方法。換句話說,在Python中使用'='時是否使用了一些內部賦值函數,並且該賦值函數是否可以被覆蓋?
看起來很難嘗試自己 - 讓我們知道會發生什麼? – barny
答案是否定的,你不能覆蓋任務。除此之外,爲此使用班級似乎沒有必要;子類化'str','unicode','dict','tuple'和朋友在微妙的方面也幾乎總是錯誤的。爲什麼不使用簡單的獨立式功能?你可以將'functools.partial'模式狀態放入它,有一個函數'validate_foobar = functools.partial(validate,foobar_schema)'然後'validate_foobar(s)' – user2722968
[可以重複Python賦值嗎?] (https://stackoverflow.com/questions/11024646/is-it-possible-to-overload-python-assignment) –