Lista de guia rapidosOperaes com Listas:OperaoDescriox in s1 se
x estiver contido em s, caso contrrio 0.n not in s1 se x no estiver
contido em s, caso contrrio 0.s + t concatenao de s + t.s * n n
cpias de s concatenado.s!i"e#emento cu$o %ndice & i, primeiro
%ndice & 0.s!i:$"se'(encia de e#ementos entre os %ndices i e
$.#en)s*n+meros de e#ementos da se'(,ncia )comprimento*.min)s*menor
va#or da se'(,ncia.max)s*maior va#or da se'(,ncia.s!i" - $su.stitui
um e#emento.s!i:$" - tsu.stitui um grupo de e#ementos.de#
s!i"remove o e#emento da posio i.de# s!i:$"remove um grupo de
e#ementos.s.append)x* adiciona um e#emento )no /ina# da
#ista*.s.extend)x* adiciona uma #ista )ao /ina# da
#ista*.s.count)x*retorna o n+mero de ve0es 'ue um e#emento est
presente na #istas.index)x*retorna o menor %ndice do
e#emento.s.insert)i,x* insere o e#emento x na posio
i.s.pop)!i"*retira um e#emento da posio i. 1adro i - 21.s.remove)x*
remove um e#emento.s.reverse)* inverte a ordem da
#ista.s.sort)!cmp/unc"* ordena a #ista.3xemp#os:444 a - !1,5,6"444
s - !1,5,6"444 t - !7,8,9"444 x - 5444 x in s:rue444 x not in
s;a#se444 s + t!1, 5, 6, 7, 8, 9"444 s * 5!1, 5, 6, 1, 5, 6"444
s!5"6444 s!1:6"!5, 6"444 #en)s*6444 min)s*1444 max)s*6444 a -
!1,5,6,7"444 a!1" - 10444 a!1, 10, 6, 7"444 a.append)60*444 a!1,
10, 6, 7, 60"444 a.extend)!#ist>4444 /or $ogador in
'uadrado=agico:print $ogador
?ona#do@aAa?ona#dinBoCdriano444 #en)'uadrado=agico*17444 /or i
in range)#en)'uadrado=agico**:print 'uadrado=agico!i"
?ona#do@aAa?ona#dinBoCdriano444 range)#en)'uadrado=agico**!0, 1,
5, 6"444 range)7*!0, 1, 5, 6"444 ' - 'uadrado=agico444
$ogador>Cdriano>444 #en)'*7444 print '!0"?ona#do444 print
'!1"@aAa444 print '!5"?ona#dinBo444 print '!6"Cdriano444
'!7":race.acA )most recent ca## #ast*:;i#e FEpDsBe##G584F, #ine 1,
in 2top#eve#2'!7"Hndex3rror: #ist index out o/ range444 /or i in
range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"
0 ?ona#do1 @aAa5 ?ona#dinBo6 Cdriano444 '!>?ona#do>,
>@aAa>, >?ona#dinBo>, >Cdriano>"444 /or i in
range)#en)'uadrado=agico**:i/ 'uadrado=agico!i"!0" -- >?>:
print i, 'uadrado=agico!i"
0 ?ona#do5 ?ona#dinBo444 /or i in range)#en)'uadrado=agico**:i/
'uadrado=agico!i"!0" -- >?>: print i,
'uadrado=agico!i"@eD.oardHnterrupt444 /or $ogador in ':i/
$ogador!0" -- >?>:print $ogador
?ona#do?ona#dinBo444 'uadrado=agico.sort)*444 /or $ogador in
':print $ogador
Cdriano5@aAa?ona#dinBo?ona#do444 'uadrado=agico.reverse)*444 /or
$ogador in ':print $ogador
?ona#do?ona#dinBo@aAaCdriano444 /or i in
range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"
0 ?ona#do1 ?ona#dinBo5 @aAa6 Cdriano444
$ogador>Cdriano>444 $ogador in 'uadrado=agico:rue444 $ogador
- >Iianca>444 $ogador in 'uadrado=agico;a#se444 444 444 /or
$ogador in ':i/ $ogador!0:5" -- >?o>:print $ogador
?ona#do?ona#dinBo444 '.append)>?icardinBo>*444 #en)'*8444
'!>?ona#do>, >?ona#dinBo>, >@aAa>,
>Cdriano>, >?icardinBo>"444 /or $ogador in ':i/
$ogador!0" -- >?>:print $ogador
?ona#do?ona#dinBo?icardinBo444 /or $ogador in ':i/ $ogador!0:5"
-- >?o>:print $ogador
?ona#do?ona#dinBo444 #en)'*@eD.oardHnterrupt444 /or $ogador in
':print $ogador
?ona#do?ona#dinBo6@aAaCdriano?icardinBo444 '.sort)*444
'!>Cdriano>, >@aAa>, >?icardinBo>,
>?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print
$ogador
Cdriano@aAa?icardinBo?ona#dinBo?ona#do444 '!0" - >Cdriano
Hmperador>444 '!>Cdriano Hmperador>, >@aAa>,
>?icardinBo>, >?ona#dinBo>, >?ona#do>"444 '!1" -
>1rincipe> + > > + '!1"444 '!>Cdriano Hmperador>,
>1rincipe @aAa>, >?icardinBo>, >?ona#dinBo>,
>?ona#do>"444 /or $ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAa?icardinBo?ona#dinBo?ona#do444
'!5" - >?omrio>444 '!>Cdriano Hmperador>, >1rincipe
@aAa>, >?omJxe1rio>, >?ona#dinBo>,
>?ona#do>"444 /or $ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAa?omrio?ona#dinBo?ona#do444 '!5" +-
FKovLF444 '!>Cdriano Hmperador>, >1rincipe @aAa>,
>?omJxe1rioKovJx/7>, >?ona#dinBo>, >?ona#do>"444
/or $ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAa?omrioKovL?ona#dinBo?ona#do444
'!5" - FKovo ?omarioF444 '!>Cdriano Hmperador>, >1rincipe
@aAa>, >Kovo ?omario>, >?ona#dinBo>,
>?ona#do>"444 /or $ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo7?ona#do444
'!6" +- > Ma+cBo>444 /or $ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo
Ma+cBo?ona#do444 '!7" +- > Io#ao>444 /or $ogador in ':print
$ogador
Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo
Ma+cBo?ona#do Io#ao444 444 444 444 444 444 444 '.sort)*444 /or
$ogador in ':print $ogador
Cdriano Hmperador1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario444 #en)'*8444 $ogador - '!0"444 $ogador>Cdriano
Hmperador>444 n - $ogador.sp#it)*444 n!>Cdriano>,
>Hmperador>"444 '!0" - n!1" + > > + n!0"444
'!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo
MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 /or
$ogador in ':print $ogador
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario444 '!0".sp#it)*!>Hmperador>, >Cdriano>"444
'!0".sp#it)*!0">Hmperador>444 nome - '!0"444
nome>Hmperador Cdriano>444 nomeN - nome.sp#it)*8444
nomeN!>Hmperador>, >Cdriano>"444
nomeN!0">Hmperador>444 /or $ogador in 'uadrado=agico:print
$ogador
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario444 '!>Hmperador Cdriano>, >1rincipe @aAa>,
>?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo
?omario>"444 'uadrado=agico!>Hmperador Cdriano>,
>1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do
Io#ao>, >Kovo ?omario>"444 copia - 'uadrado=agico!:"444
copia!>Hmperador Cdriano>, >1rincipe @aAa>,
>?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo
?omario>"444 copia.pop)*>Kovo ?omario>444
copia!>Hmperador Cdriano>, >1rincipe @aAa>,
>?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>"444
'!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo
MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444
'uadrado=agico!>Hmperador Cdriano>, >1rincipe @aAa>,
>?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo
?omario>"444 /or $ogador in 'uadrado=agico:nomeNeparado-
$ogador.sp#it)*print nomeNeparado!0"
Hmperador1rincipe?ona#dinBo?ona#doKovo444
copia.pop)*@eD.oardHnterrupt444 /or $ogador in 'uadrado=agico:print
$ogador.upper)*
H=13?CDO? CD?HCOO1?HOPH13 @C@C?OOCLDHOQO MCRPQO?OOCLDO IOLCOKOKO
?O=C?HO444 @eD.oardHnterrupt444 /or i in
range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"
0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do
Io#ao7 Kovo ?omario444 /or i in range)#en)'uadrado=agico**:print i,
'[email protected] /or $ogador in 'uadrado=agico:
[email protected] /or i in range)#en)'uadrado=agico**:'!i" -
'!i".#oSer)*print '!i"
imperador adrianoprincipe AaAarona#dinBo ga+cBorona#do .o#aovovo
romario444 /or $ogador in 'uadrado=agico: print $ogadorimperador
adrianoprincipe AaAarona#dinBo ga+cBorona#do .o#aovovo romario444
'!>imperador adriano>, >principe AaAa>, >rona#dinBo
gaJx/acBo>, >rona#do .o#ao>, >vovo romario>"444 /or
$ogador in 'uadrado=agico: print $ogador.tit#e)*Hmperador
Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444
/or $ogador in 'uadrado=agico: print $ogador.capita#i0e)*Hmperador
adriano1rincipe AaAa?ona#dinBo ga+cBo?ona#do .o#aoKovo romario444
/or i in range)#en)'uadrado=agico**:'!i" - '!i".tit#e)*print
'!i"
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario444 #en)'*8444 444 444 444 /or $ogador in 'uadrado=agico:
print [email protected] /or i in
range)#en)'uadrado=agico**:print '!i"
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario444 /or i in range)#en)'uadrado=agico**:print i, '!i"
T0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do
Io#ao7 Kovo ?omario444 '.append)>3dson Crantes do
Oascimento>*444 '!>Hmperador Cdriano>, >1rincipe
@aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>,
>Kovo ?omario>, >3dson Crantes do Oascimento>"444 /or
$ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print
nomeNeparado!0"
Hmperador1rincipe?ona#dinBo?ona#doKovo3dson444 444 444 /or
$ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print
nomeNeparado!21"
Cdriano@aAaMa+cBoIo#ao?omarioOascimento444 /or $ogador in
'uadrado=agico:nomeNeparado- $ogador.sp#it)*print
nomeNeparado!1"
Cdriano@aAaMa+cBoIo#ao?omarioCrantes444 '!>Hmperador
Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>,
>?ona#do Io#ao>, >Kovo ?omario>, >3dson Crantes do
Oascimento>"444 /or $ogador in 'uadrado=agico:nomeNeparado-
$ogador.sp#it)*print nomeNeparado!21"
Cdriano@aAaMa+cBoIo#ao?omarioOascimento444 /or $ogador in
'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0",
nomeNeparado!21"
Hmperador CdrianoU1rincipe @aAa?ona#dinBo Ma+cBo?ona#do
Io#aoKovo ?omario3dson Oascimento444 '.append)>=arco Cndre Lopes
=endes>*444 444 /or $ogador in 'uadrado=agico:nomeNeparado-
$ogador.sp#it)*print nomeNeparado!21"
Cdriano@aAaMa+cBoIo#ao?omarioOascimento=endes444 /or $ogador in
'uadrado=agico:nomeNeparado- $ogador.sp#it)*print
nomeNeparado!0"
Hmperador1rincipe?ona#dinBo?ona#doKovo3dson=arco444 /or $ogador
in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print
nomeNeparado!0", nomeNeparado!21"
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario3dson Oascimento=arco =endes444 /or i in
range)#en)'uadrado=agico**:print i, '!i"
0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do
Io#ao7 Kovo ?omario8 3dson Crantes do Oascimento9 =arco Cndre Lopes
=endes444 i - 0444 SBi#e 1 E #en)'*:print '!i"i +- 1
Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo
?omario3dson Crantes do OascimentoHmperador Cdriano>,
>1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do
Io#ao>, >Kovo ?omario>, >3dson Crantes do
Oascimento>, >=arco Cndre Lopes =endes>"444 de#
'uadrado=agico!7"444 /or $ogador in 'uadrado=agico:nomeNeparado-
$ogador.sp#it)*print nomeNeparado!0",
nomeNeparado!21"@eD.oardHnterrupt444 /or i in
range)#en)'uadrado=agico**:print i, '!i"
0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do
Io#ao7 3dson Crantes do Oascimento8 =arco Cndre Lopes =endes444
$ogador- '.pop)*10444 $ogador>=arco Cndre Lopes =endes>444
/or i in range)#en)'uadrado=agico**:print i, '!i"
0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do
Io#ao7 3dson Crantes do Oascimento444 $ogador- '.pop)6*444
$ogador>?ona#do Io#ao>444 /or i in
range)#en)'uadrado=agico**:print i, '!i"
0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 3dson
Crantes do Oascimento444 '.append)FDiogoF*444 '!>Hmperador
Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>,
>3dson Crantes do Oascimento>, >Diogo>"444
'.insert)0,FQe#enoF*444 '!>Qe#eno>, >Hmperador
Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>,
>3dson Crantes do Oascimento>, >Diogo>"444 /ruta -
!>.anana>,>maca>"444 /ruta!>.anana>,
>maca>"444 /rutas - !>.anana>,>maca>"444 /or i in
range)#en)/rutas**:/rutas!i" +- FsF
444 /rutas!>.ananas>, >macas>"444 /or i in
range)5*:/rutas!i" +- FsF
444 /or i in range)5*:print /rutas!i"
.ananassmacass444 /rutas.append)>AiSi>*444 /or i in
range)5*:print /rutas!i"
.ananassmacass444 /or i in range)6*:print /rutas!i"
.ananassmacassAiSi444 /ruta!>.anana>, >maca>"444
/ruta - /rutas!0"11444 /ruta>.ananass>444
/ruta!:21">.ananas>444 /ruta!:25">.anana>444
/ruta!:">.ananass>444 /ruta>.ananass>444
/ruta!0:25">.anana>444 /ruta!0:5">.a>444
/ruta!0:6">.an>444 /ruta!0:25">.anana>444
'!>Qe#eno>, >Hmperador Cdriano>, >1rincipe @aAa>,
>?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>,
>Diogo>"444 '.pop)*>Diogo>444 '!>Qe#eno>,
>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo
MaJx/acBo>, >3dson Crantes do Oascimento>"444 #en)'*8444
'.remove)FQe#enoF*444 '!>Hmperador Cdriano>, >1rincipe
@aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do
Oascimento>"444 444 444 444 min)'*>3dson Crantes do
Oascimento>444 notas - !o: to .ro'ram. .rentice
>all-2II2P3ClassesResumoMarcoAndreLopesMendes18Objetivos:A
pro'ramao orientada a o$;etos 5.336 um meio diferente de pensar
so$re pro'ramao. J uma metodolo'ia moderna *ue foi a$raadapela
ind@stria de soft:are e usada na criao da maioria dos soft:are
comerciais novos. 3 $loco $&sico de construo em .33 o o$;eto
desoft:are8fre*Kentementec%amados apenas deo$;eto. A'ora-
voc9dar&seus primeiros passos
emdireoFcompreensoda.33.Especificamente- voc9 aprender& aL1.
)riar classes para definir o$;etos2. Escrever mtodos e criar
atri$utos para o$;etos. Mnstanciar o$;etos a partir de classes".
!estrin'ir o acesso a atri$utos do o$;etoA pro'ramao orientada a
o$;etos 5.336 encapsula 5i.e.- em$rul%a6 dados 5atri$utos6 e funes
5comportamentos6 em componentes c%amadosde classes. 3s dados e
funes de uma classe intimamente esto
li'ados.4maclassecomoumdesen%otcnico. 4sandoumdesen%otcnico-
umconstrutor podeconstruir umacasa. 4sandoumaclasse- umpro'ramador
podem criar um o$;eto 5tam$m c%amado de uma instncia6.)lasses t9m
uma propriedade c%amada de ocultao da informao. Em$ora o$;etos
possam sa$er como comunicar1se atravs de interfaces$em1definidas- a
um o$;eto normalmente no deve ser permitido sa$er como outro o$;eto
implementado 8 detal%es de implementao soescondidos dentro dos
o$;etos.Em pro'ramao procedural- a unidade de pro'ramao a funo. Em
pro'ramao orientada a o$;etos- a unidade de pro'ramao a classede
*uem o$;etos eventualmente so instanciados..ro'ramadores
procedurais se concentram em escrever funes. 3s ver$os numa
especificao de sistema a;udam o pro'ramador procedural adeterminar
o con;unto de funes *ue tra$al%aro ;untos para implementar o
sistema..ro'ramadores de .33 concentram1se em criar seus prprios
tipos de dados definidos pelo usu&rio- c%amados de classes. 3s
su$stantivosnuma especificao de sistema a;udam o pro'ramador de .33
a determinar o con;unto de classes *ue ser& usado para criar os
o$;etos *uetra$al%aro ;untos para implementar o sistema.)lasses
simplificam a pro'ramao por*ue os clientes necessitam estar
preocupados s com as operaes encapsuladas ou em$utidas noo$;eto 8 a
interface de o$;eto.A palavra1c%ave class inicia uma definio de
classe. A palavra1c%ave se'uida pelo nome da classe- *ue se'uido
por um sinal de dois pontos5L6. A lin%a *ue contm a palavra1c%ave
class e o nome de classe c%amada de ca$eal%o 5%eader6 da classe.3
corpo da classe um $loco de cdi'o endentado *ue contm mtodos e
atri$utos *ue pertencem F classe.4mastrin'dedocumentao opcional
daclassedescreveaclasse. ?euma classecontmumastrin's dedocumentao-
a strin'sdeveaparecer na lin%a ou lin%as se'uindo o ca$eal%o da
classe.3 mtodo init o mtodo construtor de uma classe. 4m construtor
um mtodo especial *ue e+ecuta cada ve7 um o$;eto de uma classe
criado. 3 construtor inicia os atri$utos do o$;eto e retorna
Cone.#odos os mtodos- incluindo construtores- devem especificar ao
menos um parmetro 8 a refer9ncia de o$;eto. Este parmetro
representa oo$;eto da classe para o *ual o mtodo c%amado. 3s mtodos
devem usar a refer9ncia de o$;eto para acessar atri$utos e outros
mtodos *uepertencem F classe. .or conveno- o ar'umento de
refer9ncia de o$;eto c%amado self.)ada o$;eto tem o prprio
namespace *ue contm osmtodos do o$;eto e atri$utos. 3 construtor da
classe comea com um o$;eto va7io 5self6 e adiciona atri$utos ao
namespace do o$;eto.4ma ve7 *ue uma classe foi definida- pro'ramas
podem criar o$;etos dessa classe. 3s pro'ramadores podem criar
o$;etos como necess&rio. Msto uma ra7o por *ue ./t%on dita ser
uma lin'ua'em e+tens,vel.4m dos princ,pios fundamentais de um $om
pro;eto de soft:are *ue o cliente no deve necessitar sa$er como uma
classe implementadapara usar essa classe. 3 uso de mdulos de ./t%on
facilita esta a$strao de dados 8 um pro'rama pode importar uma
definio de classe eusar a classe sem sa$er como a classe
implementada..ara criar um o$;eto de uma classe- simplesmente
0c%ama1se2 o nome da classe como se fosse uma funo. Este c%amado
invoca o construtorda classe. )lasses e o$;etos de classes am$os
t9m atri$utos especiais *ue podem ser manipulados. Estes atri$utos-
*ue ./t%on cria *uandouma classe definida ou *uando um o$;eto de
uma classe criado- fornecem informao so$re a classe ou o$;eto de
uma classe a *ue elespertencem.193 acesso direto aos dados do
o$;eto pode dei+ar os dados num estado inconsistente.A maioria das
lin'ua'ens de pro'ramao orientadas a o$;etos permitem *ue um o$;eto
se previna de *ue seus clientes acessem os dados doo$;eto
diretamente. Co entanto- em ./t%on- o pro'ramador usa convenes de
nomes de atri$utos para esconder os dados de clientes.Em$ora um
cliente possa acessar os dados do o$;eto diretamente 5e talve7
fa7er com *ue os dados entrem em um estado inconsistente6-
umpro'ramador pode pro;etar classes para encora;ar o uso correto.
4ma tcnica fornecer mtodos de acesso para a classe para *ue os
dados daclasse podem ser lidos e escritos numa maneira
cuidadosamente controlada.Duando uma classe define mtodos de
acesso- um cliente deve acessar atri$utos do o$;eto s por esses
mtodos de acesso.)lasses fre*Kentemente fornecem mtodos *ue
permitem *ue os clientes colo*uem ou rece$am os valores dos
atri$utos. Em$ora estes mtodosno precisem ser c%amados set e 'et-
eles fre*Kentemente so. Mtodos 'et tam$m so c%amados de mtodos de
per'unta.4m mtodo set pode controlar o formato dos dados. 4m mtodo
set pode 8 e $em possivelmente devia 8 verificar tentativas de
modificar ovalor dos atri$utos. Msto asse'ura *ue o novo valor
apropriado para a*uele item de dados.4m mtodo set pode especificar
*ue uma mensa'em de erro 8 c%amada uma e+ceo 8 levantado ao cliente
*uando as tentativas de clientedesi'nar um valor inv&lido a um
atri$uto.Duando um autor de uma classe cria um atri$uto com um
@nico su$lin%ado principal- o autor no *uer *ue os usu&rios da
classe acessem oatri$uto diretamente. ?e um pro'rama e+i'e acesso
aos atri$utos- o autor da classe fornece al'um outro meio para
fa7er este acesso.Emlin'ua'ensdepro'ramaotaiscomo)NNeOava-
umaclassepodedeclarar
e+plicitamente*ueatri$utosoumtodospodemseracessados por clientes da
classe. Estes atri$utos ou mtodos so c%amados de p@$licos. 3s
atri$utos e mtodos *ue no podem ser acessadospor clientes da classe
so c%amados de privados..ara prevenir o acesso indiscriminado a um
atri$uto- colo*ue como prefi+o ao nome do atri$uto dois 5
caracteres de su$lin%ado6.Duando ./t%on encontra um nome de
atri$uto *ue comea com dois su$lin%ados- o interpretador previne o
acesso indiscriminado aos dados. Elemuda o nome de um atri$uto por
incluir informao so$re a classe a *ue o atri$uto
pertence.)onstrutorespodemdefinir
ar'umentospadro*ueespecificamvaloresiniciaisparaatri$utosdoo$;eto-
seoclientenoespecificaumar'umento no momento da
construo.)onstrutores podem definir ar'umentos de palavra1c%ave *ue
capacitam o cliente a especificar valores para determinados
ar'umentos.)onstrutores fornecidos pelo pro'ramador *ue possuem
valores padro para todos os seus ar'umentos 5ou *ue no e+i'em
e+plicitamentenen%um ar'umento6 tam$m so c%amados de construtores
padro.?e nen%um construtor definido para uma classe- o
interpretador cria um construtor padro. Co entanto- o esse
construtor *ue ./t%on forneceno e+ecuta nen%uma iniciali7ao- ento-
*uando um o$;eto criado- no %& 'arantia *ue o o$;eto este;a num
estado coerente.4m destruidor e+ecutado *uando um o$;eto destru,do
5p.e.- depois *ue no e+iste mais nen%uma refer9ncia ao o$;eto6.4ma
classe pode definir um mtodo especial c%amado del *ue e+ecutado
*uando a @ltima refer9ncia a um o$;eto removida ou sai do escopo.4m
destruidor normalmente no especifica nen%um parmetro alm de self e
retorna Cone.4m atri$uto de classe representa informao da amplitude
da classe 5i.e.- uma propriedade da classe- no de um o$;eto
espec,fico da classe6.Em$ora atri$utos de classe possam parecer
como vari&veis 'lo$ais- cada atri$uto de classe reside no espao
de nome da classe em *ue criado. 3s atri$utos de classe devem ser
iniciados uma ve7 5e s uma ve76 na definio de classe.4m atri$uto de
classe pode ser acessado por *ual*uer o$;eto dessa classe. 3s
atri$utos de classe tam$m e+istem mesmo *uando nen%umo$;eto dessa
classe e+iste. Acessar um atri$uto de classe *uando nen%um o$;eto
da classe e+iste- colo*ue como prefi+o o nome de classe-se'uido por
um ponto- se'uido pelo nome do atri$uto..ro'ramadores ./t%on
concentram1se em criar novas classes e em reutili7ar classes da
$i$lioteca padro. Este tipo de reusa$ilidade de soft:area'ili7a o
desenvolvimento de soft:are poderoso e de alta1*ualidade.A
$i$lioteca padro capacita os desenvolvedores de ./t%on a construir
aplicaes mais r&pido atravs da reutili7ao de classes
previamentee+istentes e e+tensamente testadas.1TReferncias1.
=eitel- >. M. et ali. ./t%on >o: to .ro'ram. .rentice
>all-2II2P3StringsResumoAulaMarcoAndreLopesMendes>>> s1
= "BSI320">>> s2 = "BSI320">>> >>>
len(s1) == len(s2)True>>> s1 == s2True>>> len(s1)
== len(s2) ; s1 == s2TrueTrue>>> s2 = "bsi320">>>
len(s1) == len(s2) ; s1 == s2TrueFalse>>> s1 =
"bsi-320">>> len(s1) == len(s2) ; s1 ==
s2FalseFalse>>> s1 ; s2'bsi-320''bsi320'>>> if
len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print "
iguais"else:print "diferentes"
>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 ==
s2:print " iguais"else:print "diferentes"else:print "Tamanho
diferente"
Tamanho diferente>>> if len(s1) == len(s2):print "Mesmo
tamanho"if s1 == s2:print " iguais"else:print
"diferentes"else:print "Tamanho diferente"
Tamanho diferente>>> s1'bsi-320'1U>>>
s2'bsi320'>>> s1 = 'bsi320'>>> if len(s1) ==
len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print
"diferentes"else:print "Tamanho diferente"
Mesmo tamanho iguais>>> s1 = 'bsi310'>>> if
len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print "
iguais"else:print "diferentes"else:print "Tamanho diferente"
Mesmo tamanhodiferentes>>> if len(s1) == len(s2):print
"Mesmo tamanho"if s1 == s2:print " iguais"else:print
"diferentes"else:print "Tamanho diferente"
Mesmo tamanhodiferentes>>> s1 = "01">>> s2 =
"1">>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 ==
s2:print " iguais"else:print "diferentes"else:print "Tamanho
diferente"
Tamanho diferente>>> s1 > s2False>>> s1
< s2True>>> int(s1)1>>> n =
"Ronaldinho">>> n'Ronaldinho'>>> for l in
range(len(n)-1,-1,-1): print n[l],1>> for l in
range(len(n)-1,-1,-1): print n[l].upper(),O H N I D L A N O
R>>> n[::-1].upper()'OHNIDLANOR'>>> >>>
>>> >>> n = "ovo">>> ni =
n[::-1]>>> n == niTrue>>> n = 'casa'>>>
n == niFalse>>> ni = n[::-1]>>>
n'casa'>>> ni'asac'>>> n = 'casa'>>> ni
= n[::-1]>>> n == niFalse>>> n =
'natan'>>> ni = n[::-1]>>> n ==
niTrue>>> n = "socorram me subi no onibus em
marrocos">>> ni = n.replace(" ","")>>>
ni'socorrammesubinoonibusemmarrocos'>>> ni =
ni[::-1]>>> n'socorram me subi no onibus em
marrocos'>>> n = "socorram me subi no onibus em
marrocos">>> n = n.replace(" ","")>>> ni =
n[::-1]>>> n == niTrue>>> n = "Festa na
sexta!">>> n'Festa na sexta!'>>> for l in
range(len(n)-1,-1,-1): print n[l]!atxes an atseF50>>> for
l in range(len(n)): print n[l]Festa na sexta!>>> for i in
range(len(n)): print n[:i+1]FFeFesFestFestaFesta Festa nFesta
naFesta na Festa na sFesta na seFesta na sexFesta na sextFesta na
sextaFesta na sexta!>>> for i in range(len(n)): print
n[0:i+1]FFeFesFestFestaFesta Festa nFesta naFesta na Festa na
sFesta na seFesta na sexFesta na sextFesta na sextaFesta na
sexta!>>> data = "29/10/1973">>>
data[0:2]'29'>>> data[3:5]'10'>>>
data[6:]'1973'>>> for i in range(len(n)-1,-1,-1): print
n[0:i+1]Festa na sexta!Festa na sextaFesta na sext51Festa na
sexFesta na seFesta na sFesta na Festa naFesta nFesta
FestaFestFesFeF>>> >>> mesesExt =
['Jan','Fev','Mar']>>> data = "29/01/1973">>> mes
= int(data[3:5])>>> mes1>>> >>> print
mesesExt[mes-1]Jan>>> n'Festa na sexta!'>>> for i
in range(len(n)): >>> c = 0>>> for i in
range(len(n)):if i>>> for letra in n:if letra = "
":>>> for letra in n:if letra == " ":c +=1
>>> c2>>> print mesesExt[mes-1]>>>
n'Festa na sexta!'>>> for letra in n:if letra == " ":c
+=1>>> c4>>> c = 0>>> >>>
>>> >>> >>> v = 0>>> for letra
in n:if letra in == " ": v +=1
>>> v = 0>>> for letra in n:if letra in
['a','e','i','o','u']:v +=1>>> v5>>> n'Festa na
sexta!'>>> n.upper()55'FESTA NA SEXTA!'>>> n =
n.lower()>>> n'festa na sexta!'>>>
n.title()'Festa Na Sexta!'>>> n.capitalize()'Festa na
sexta!'>>> n.title()'Festa Na Sexta!'>>> 'Festa
Na Sexta!''Festa Na Sexta!'>>> n'festa na
sexta!'>>> l = range(10)>>> l[0, 1, 2, 3, 4, 5,
6, 7, 8, 9]>>> l.reverse()>>> l[9, 8, 7, 6, 5, 4,
3, 2, 1, 0]>>> l[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>>
l.sort()>>> l[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>
import random>>> random.shuffle(l)>>> l[6, 9, 4,
0, 1, 3, 7, 5, 8, 2]>>> data'29/01/1973'>>>
data[3]'0'>>> data[2]'/'>>> a =
"marco">>> b = a>>> b'marco'>>> b =
"andre">>> a'marco'>>> a'marco'>>>
b'andre'>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>> l1
= l>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>>
l1.append(34566)>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2,
34566]>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2,
34566]>>> l1 = l[:]>>> l1[6, 9, 4, 0, 1, 3, 7, 5,
8, 2, 34566]>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2,
34566]>>> l.pop()3456656>>> l[6, 9, 4, 0, 1, 3,
7, 5, 8, 2]>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2,
34566]>>> 57