class Student(object):
def __init__(self, name='a', score=100):
self.name = name
# 在类里面, 双下划线开头的变量名称为私有属性;
# 私有属性在该类的其他方法中可以使用;外部不能直接调用私有属性;
# 私有属性实质是把self.__score改名为self._类名__score;
self.__score = score
# # 在类里面, 双下划线开头的函数名称为私有方法;
# 父类的私有方法, 子类不能继承;
def __get_score(self):
return self.__score
thStudent(Student):
def __init__(self, name, score, IQ):
super(MathStudent, self).__init__(name, score)
self.IQ = IQ
def ok(self):
super(MathStudent, self).__get_score()
print 'ok.....'
s = MathStudent('a', 'hello', 100)
def __init__(self, name='a', score=100):
self.name = name
# 在类里面, 双下划线开头的变量名称为私有属性;
# 私有属性在该类的其他方法中可以使用;外部不能直接调用私有属性;
# 私有属性实质是把self.__score改名为self._类名__score;
self.__score = score
# # 在类里面, 双下划线开头的函数名称为私有方法;
# 父类的私有方法, 子类不能继承;
def __get_score(self):
return self.__score
thStudent(Student):
def __init__(self, name, score, IQ):
super(MathStudent, self).__init__(name, score)
self.IQ = IQ
def ok(self):
super(MathStudent, self).__get_score()
print 'ok.....'
s = MathStudent('a', 'hello', 100)
print s.__get_score()
_formats 魔术方法
_formats = {
'ymd': '{d.year}-{d.month}-{d.day}',
'mdy': '{d.month}/{d.day}-{d.year}',
'dmy': '{d.day}/{d.month}/{d.year}',
}
class Date(object):
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
def __format__(self, code):
if code == '':
code = 'ymd'
fmt = _formats[code]
return fmt.format(d=self)
d = Date(2018, 1, 9)
print format(d, 'ymd')
print format(d, 'mdy')
print format(d, 'dmy')
````
2018-1-9
1/9-2018
9/1/2018
__iter__ 魔术方法
from collections import Iterable class Student(object): def __init__(self,name): self.name=name self.score=[100,90,89] def __iter__(self): print '判断self.score是否可迭代' ##self.score可迭代 print iter(self.score) ##打印self.score迭代类型:为列表迭代对象 for i in self.score: ##遍历self.score print i return self.score s=Student('fentiao') print s.__iter__() ````` 判断self.score是否可迭代 <listiterator object at 0x7f3bc2420c90> 100 90 89 [100, 90, 89]
class Student(object): def __init__(self, name, score): self.name = name self.score = score def __iter__(self): return iter(self.score) def __ge__(self, other): avg1 = sum(self.score) / len(self.score) avg2 = sum(other.score) / len(other.score) return avg1 == avg2 def __gt__(self, other): avg1 = sum(self.score) / len(self.score) avg2 = sum(other.score) / len(other.score) if avg1 > avg2: print "avg1大" else: print "avg2大" return avg1 < avg2 def __le__(self, other): pass def __lt__(self, other): pass s = Student('fentiao', [55, 12,22]) s1 = Student('fendai', [77, 35,55,25]) print s.__ge__(s1) print s.__gt__(s1)切片魔术方法(迭代)
from collections import Iterable class Student(object): def __init__(self, name): self.name = name self.score = [100, 90, 89, 100, 89] def __getslice__(self,i, j): return self.score[i:j] def __setslice__(self, i, j, item): self.score[i:j] = item def __delslice__(self, i, j): del self.score[i:j] s1 = Student('fentiao') print s1[1:4] s1[1:4]=[0, 0, 0] print s1[1:5] s1[1:4]= [100, 60, 80] del s1[0:3] print s1[0:5] [90, 89, 100] [0, 0, 0, 89] [80, 89]