怎麼避免出現重複的屬性和方法

我們編寫程式碼的時候,有時候不得不重複定義一些執行相同任務的屬性和方法,比如說執行型別檢查,類似於下面這樣:

class person: def __init__(self, name, age): self。name = name self。age = age @property def name(self): return self。name @name。setter def name(self, value): if not isinstance(value, str): raise TypeError(‘name must be a string’) self。_name = value @property def age(self): return self。age @age。setter def age(self, value): if not isinstance(value, int): raise TypeError(‘age must be a int’) self。_age = value

如果想簡化程式碼,解決程式碼重複的問題,應該怎麼辦呢?

可以看到,上面的程式碼很多僅僅只是強制對屬性進行型別斷言,如果當我們的程式碼程式設計上面程式碼的類似的樣子的時候,我們就應該考慮各種方法來簡化我們的程式碼,比如說建立一個函式,讓這個函式為我們定義這個屬性並返回給我們,如下:

def typed_property(name, expected_type): storage_name = ‘_’ + name @property def prop(self): return getattr(self, storage_name) @prop。setter def prop(self, value): if not isinstance(value, expected_type): raise TypeError(‘{} must be {}’。format(name, expected_type)) setattr(self, storage_name, value) return propclass Person: name = typed_property(‘name’, str) age = typed_property(‘age’, int) def __init__(self, name, age): self。name = name self。age = age

是不比上面的程式碼簡潔多了?

好的!(*^_^*)就到這裡。

我是一名程式媛,請大家關注我哦!

怎麼避免出現重複的屬性和方法