>>> from types import MethodType >>> s.set_age=MethodTpye(set_age,s) Traceback (most recent call last): File "<pyshell>", line 1, in <module> NameError: name 'MethodTpye' is not defined >>> s.set_age=MethodType(set_age,s) >>> s.set_age(25) >>> s.age 25 >>> def set_score(self,score): self.score=score
>>> student.set_score=89 >>> s.score Traceback (most recent call last): File "<pyshell>", line 1, in <module> AttributeError: 'student' object has no attribute 'score' >>> student.score Traceback (most recent call last): File "<pyshell>", line 1, in <module> AttributeError: type object 'student' has no attribute 'score' >>> student.set_score=set_score >>> s.set_score(410) >>> s.score 410 >>> class student(object): __slots__=('name','age')
>>> s=student() >>> s.name='xj' >>> s.age=78 >>> s.score=45 Traceback (most recent call last): File "<pyshell>", line 1, in <module> AttributeError: 'student' object has no attribute 'score' >>> class student(object): def get_score(self): return self.score def set_score(self,value): if not isinstance(value,int): raise valueerror('错误的输入数据!') if value <0 or value >100: raise valueerror('score must between 0~100') self.score=value
>>> s=student() >>> s.set_score(20) >>> s.get_score() 20 >>> s.set_score(101) Traceback (most recent call last): File "<pyshell>", line 1, in <module> File "<pyshell>", line 8, in set_score NameError: name 'valueerror' is not defined >>> s.set_score('4') Traceback (most recent call last): File "<pyshell>", line 1, in <module> File "<pyshell>", line 6, in set_score NameError: name 'valueerror' is not defined >>> class student(object): @property def score(self): return self.score @score.setter def score(self,value): if not isinstance(value,int): raise ValueError('错位u的书籍输入') if value <0 or value >100: raise ValueError('分数必须在0到100') self.score=value
>>> s=student() >>> s.score=78 File "<pyshell>", line 11, in score >>> class student(object): @property def score(self): return self._score @score.setter def score(self,value): if not isinstance(value,int): raise ValueError('错位u的书籍输入') if value <0 or value >100: raise ValueError('分数必须在0到100') self._score=value
>>> s=student() >>> s._score=89 >>> s._score 89 >>> s._score=101 >>> s._score=501 >>> s._score 501 >>> s.score=89 >>> s.score 89 >>> s.score=101 Traceback (most recent call last): File "<pyshell>", line 1, in <module> File "<pyshell>", line 10, in score ValueError: 分数必须在0到100 >>> s.score='1' Traceback (most recent call last): File "<pyshell>", line 1, in <module> File "<pyshell>", line 8, in score ValueError: 错位u的书籍输入 >>> >>> class student(object): def __init__(self,name): self.name=name
>>> print(student('jx')) <__main__.student object at 0x034919F0> >>> class student(object): def __init__(self,name): self.name=name def __str__(self): return 'student object(name:%s)' %self.name
File "<pyshell>", line 8 if self.a>100000 ^ SyntaxError: invalid syntax >>> class fib(object): def __init__(self): self.a,self.b=0,1 def __iter__(self): return self def __next__(self): self.a,self.b=self.b,self.a+self.b if self.a>100000 raise StopIteration() return self.a
File "<pyshell>", line 8 if self.a>100000 ^ SyntaxError: invalid syntax >>> >>> class fib(object): def __init__(self): self.a,self.b=0,1 def __iter__(self): return self def __next__(self): self.a,self.b=self.b,self.a+self.b if self.a>100000: raise StopIteration() return self.a
>>> for n in fib(): print(n)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 >>> class fib(object): def __getitem__(self,n): a,b=1,1 for x in range(n): a,b=b,a+b return a
>>> f=fib() >>> f[0] 1 >>> f[100] 573147844013817084101 >>> f[10:20] Traceback (most recent call last): File "<pyshell>", line 1, in <module> File "<pyshell>", line 4, in __getitem__ TypeError: 'slice' object cannot be interpreted as an integer >>> class fib(object): def __getitem__(self,n): if isinstance(n,int):#n是索引 a,b=1,1 for x in range(n): a,b=b,a+b return a if isinstance(n,slice):#n是切片 start=n.start stop=n.stop if start is None start =0 a,b=1,1 L=[] for x in range(stop): if x>=start: L.append(a) a,b=b,a+b return L
File "<pyshell>", line 11 if start is None ^ SyntaxError: invalid syntax >>> class fib(object): def __getitem__(self,n): if isinstance(n,int):#n是索引 a,b=1,1 for x in range(n): a,b=b,a+b return a if isinstance(n,slice):#n是切片 start=n.start stop=n.stop if start is None: start =0 a,b=1,1 L=[] for x in range(stop): if x>=start: L.append(a) a,b=b,a+b return L