你指的是默认的关键字参数。您在示例中指定它的方式意味着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”来让setter和getters获得一个基本属性。但是,如果该属性需要计算,那么你可以把它的属性:
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'
来源
2012-12-06 21:31:06
jdi
http://www.diveintopython.net/object_oriented_framework/defining_classes.html#d0e11720 –