由於最近工作需要,開始接觸python這門語言。正在體驗他的新奇,第一個讓我迷惑的概念就是類的變量與對象的變量。
雖然可以簡單的將他們映射為C++等面向對象語言中類的static成員與普通成員,但是個人覺得對象的變量這種概念過於靈活。譬如
#
! /usr/bin/python
# Filename:object.py
class Person:
countofperson = 0
def __init__(self,name):
self.name = name
# Filename:object.py
class Person:
countofperson = 0
def __init__(self,name):
self.name = name
print '(Initializing %s)' %self.name
有一個這樣的類<人>,按照python中的說法定義了對象的變量name,以及類變量人的個數countofpersion。有一個缺點就是對於類的整體並沒有直觀的展現在人的面前,因為對象的變量他是隱藏在類定義的函數成員里,人們可能第一時間關注不到某個類的全部對象的變量。
為了保證這點,對於類的清晰程度,建議可以采用__name的方式定義對象的變量,這樣既保證了變量的僅作用於對象,又保證了類的清晰度,很滿足常規的編程規范。何樂而不為呢?上面那段代碼就可以改寫為
#! /usr/bin/python
#
Filename:object.py
class Person:
countofperson = 0
__name = []
class Person:
countofperson = 0
__name = []
def__init__(self,name):
self.__name = name
print '(Initializing %s)' %self.__name