あなたが参照しているのは、デフォルトのキーワード引数です。name
例で指定した方法は、コンストラクターで必要であることを意味します。デフォルトにする(そしてコンストラクターの後に設定できるようにする)方法は、次のようになります。
class Friend(object):
def __init__(self,name=''):
self.name = name
def set_name(self,name):
self.name=name
def get_name(self):
return self.name
これで、名前なしでクラスをインスタンス化できます。
aFriend = Friend()
コメントで示唆されているように、基本属性のセッターとゲッターを持つことは「pythonic と見なされる」ことではありません。ただし、その属性が計算を必要とする場合は、それをプロパティにすることができます。
class Friend(object):
def __init__(self, firstname='', lastname=''):
self.firstname = firstname
self.lastname = lastname
@property
def firstname(self):
return self._first
@firstname.setter
def firstname(self, n):
self._first = n.capitalize()
@property
def lastname(self):
return self._last
@lastname.setter
def lastname(self, n):
self._last = n.capitalize()
@property
def fullname(self):
return "{0} {1}".format(self.firstname, self.lastname)
f = Friend('frank')
f.lastname = 'smith'
f.firstname
# 'Frank'
f.lastname
#'Smith'
f.fullname
#'Frank Smith'