-
>>> getattr(s, 'name') # 获取name属性
'Bob'
>>> setattr(s, 'name', 'Adam') # 设置新的name属性for k,v in kw.iteritems():
setattr(self,k,v)查看全部 -
class BStudent(Student,BasketballMixin):
passclass FTeacher(Teacher,FootballMixin):
pass查看全部 -
isinstance(s, Person)
super(Student, self).__init__(name, gender)
查看全部 -
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
查看全部 -
def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum
像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)
查看全部 -
__init__查看全部
-
def __call__(self, num): a, b, L = 0, 1, [] for n in range(num): L.append(a) a, b = b, a + b return L
查看全部 -
class Student(Person):
#__slots__ = ('name','gender','score')
#__slots__ = ('score1',) #error
__slots__ = ('score',)
def __init__(self, name, gender,score):
Person.__init__(self, name, gender)
self.score = score
s = Student('Bob', 'male', 59)
s.name = 'Tim'
s.score = 99
print s.score
s.grade = 99 #if(no slots in Student,it runs ok)
print s.grade
查看全部 -
@property
def score(self):
return self.__score
@score.setter
def score(self, score):
if score < 0 or score > 100:
raise ValueError('invalid score')
self.__score = score
查看全部 -
@property
def grade(self):
print s.grade
查看全部 -
这样一来,s.set_score(1000) 就会报错。
这种使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。
但是写 s.get_score() 和 s.set_score() 没有直接写 s.score 来得直接。
有没有两全其美的方法?----有。
class Student(object): def __init__(self, name, score): self.name = name self.__score = score @property def score(self): return self.__score @score.setter def score(self, score): if score < 0 or score > 100: raise ValueError('invalid score') self.__score = score
注意: 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。
现在,就可以像使用属性一样设置score了:
>>> s = Student('Bob', 59) >>> s.score = 60 >>> print s.score 60 >>> s.score = 1000 Traceback (most recent call last): ... ValueError: invalid score
说明对 score 赋值实际调用的是 set方法。
查看全部 -
return float(self.p) / self.q,把其中一个变成float即可得到float结果
查看全部 -
gcd(self.p,self.q),求最大公约数
查看全部 -
@classmethod
def how_many(cls):
return cls.__count查看全部 -
实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。
查看全部
举报