Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exemple de code (pour exercice sur les objets)

2 réponses
Avatar
DG Branciard
Hello
Voici un exemple de code (pour exercice sur les objets)
je ne comprend pas comment je peux regrouper le deux class date_jour et
dat_mois sous un m=EAme nom de class par exemple def_date
du style

class def_date
def __init__(self,
ce_jour=3Ddatetime.date.today(),ce_mois=3Ddatetime.date.today())
self.ce_jour =3D jours.nom_jours[ ce_jour.weekday()]
self.ce_mois =3D mois.nom_mois[ ce_mois.month -1]
def nom_jour(self):
return self.ce_jour
def mois(self):
return self.ce_mois

c'=E9tait mon id=E9e de d=E9part que j'ai abandonner pour finir avoir le
code complet si dessous...
et qui fonctionne =E0 ma convenance

il y a quelque chose qui m'=E9chappe quelque part (je n'ai jamais eu de
formation sur le sujet)

si l'un ou l'autre peux me donner une autre id=E9e il est le bien
venue...
A+ Dominique-Georges

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import datetime

class mois:
"D=E9finition de la classe des nom des mois"
nom_mois =3D ["Janvier", "F=E9vrier", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Ao=FBt", "Septembre", "Octobre", "Novembre", "D=E9cembre"]

class jours:
"D=E9finition de la classe des noms des jours de la semaine"
nom_jours =3D ["Lundi", "Mardi", "Mercredi", "Jeudi",
"Vendredi","Samedi","Dimanche"]

class date_jour:
def __init__(self, ce_jour =3D datetime.date.today()):
self.ce_jour =3D jours.nom_jours[ ce_jour.weekday()]

def nom_jour(self):
return self.ce_jour

class date_mois:
def __init__(self, ce_mois =3D datetime.date.today() ):
self.ce_mois =3D mois.nom_mois[ ce_mois.month -1]

def mois(self):
return self.ce_mois

def main():
dt_j =3D date_jour()
print 'nom du jours. %s' % dt_j.nom_jour()
## -> resultat: -> nom du jour. Vendredi

dt_m =3D date_mois()
print 'nom du mois . %s' % dt_m.mois()
## -> resultat: -> nom du mois . Ao=FBt

mois =3D datetime.date.today().month -1
print '%s %d %s' % (dt_j.nom_jour(), mois, dt_m.mois())
## -> resultat: -> Vendredi 7 Ao=FBt
## c'est bien ce que je recherche =E0 la base
=20
if __name__ =3D=3D '__main__':
main()

2 réponses

Avatar
Bruno Desthuilliers
DG Branciard wrote:
Hello
Voici un exemple de code (pour exercice sur les objets)
je ne comprend pas comment je peux regrouper le deux class date_jour et
dat_mois sous un même nom de class


Réponse tout en bas. Mais prend quand même le temps de lire le reste de
ma réponse avant (si possible en ne m'en voulant pas trop de n'être pas
du tout diplomate - autrement dit : mets ton gilet parre-balles,
j'envoie la sauce !-)

par exemple def_date
du style

class def_date


1/ il manque les ':' après def_date

2/ la convention en Python est de nommer les classes en CamelCase
(nb : les noms de classes en minuscule sont utilisés pour les types
standard, ie string, list, dict, set etc)

3/ 'def' fait penser à une définition de fonction

4/ utilise de préférence des classes 'New style'

def __init__(self,


pb d'indentation (en tout cas dans mon newsreader)

ce_jourÚtetime.date.today(),ce_moisÚtetime.date.today())


Attention, en Python, les arguments par defaut sont évalués une seule
fois, au moment ou la définition de fonction est évaluée (c'est à dire
en général lors de l'import du module).

self.ce_jour = jours.nom_jours[ ce_jour.weekday()]
self.ce_mois = mois.nom_mois[ ce_mois.month -1]
def nom_jour(self):
return self.ce_jour


Ca ne sert pas à grand chose, comme méthode. Autant appeler obj.ce_jour
directement. Et tant qu'à faire, renommer 'ce_jour' en 'nom_jour'

def mois(self):
return self.ce_mois


Idem. En outre, l'API est inconsistente ('nom_jour', donc devrait être
'nom_mois')

c'était mon idée de départ que j'ai abandonner pour finir avoir le
code complet si dessous...
et qui fonctionne à ma convenance

il y a quelque chose qui m'échappe quelque part


Plus d'une. Mais on est tous passé par là.

(je n'ai jamais eu de
formation sur le sujet)


Pas mieux. Ceci étant, les tutoriels sur Python ne manquent pas.

si l'un ou l'autre peux me donner une autre idée il est le bien
venue...


Lire la doc ?-)


#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import datetime

class mois:
"Définition de la classe des nom des mois"
nom_mois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]


Pas besoin d'une classe pour ça:

NOMS_MOIS = ["Janvier", "Février", "Mars",
"Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre",
"Octobre", "Novembre", "Décembre"]

class jours:


Idem

"Définition de la classe des noms des jours de la semaine"
nom_jours = ["Lundi", "Mardi", "Mercredi", "Jeudi",
"Vendredi","Samedi","Dimanche"]

class date_jour:
def __init__(self, ce_jour = datetime.date.today()):
self.ce_jour = jours.nom_jours[ ce_jour.weekday()]

def nom_jour(self):
return self.ce_jour


Ce n'est pas vraiement une date....

class Jour(object):
def __init__(self, jour=None):
if jour is None:
jour = datetime.date.today()
self.jour = jour

def nom_jour(self):
return NOMS_JOURS[self.jour.weekday()]


Ou mieux encore:

class Jour(object):
def __init__(self, jour=None):
if jour is None:
jour = datetime.date.today()
self.jour = jour

@apply
def jour():
def fget(self):
return self._jour

def fset(self, jour):
self._jour = jour
self._nom_jour = NOMS_JOURS[self.jour.weekday()]

return property(**locals())

@apply
def nom_jour():
def fget(self):
return self._nom_jour

def fset(self, ignore):
raise AttributeError("%s.nom_jour is read-only" % self.__class__)

return property(**locals())

class date_mois:


Même punition, même motif...
class Mois(object):
# A toi de jour...
# (NB : tu en aura besoin pour la réponse à ta question initiale)
pass

def main():
dt_j = date_jour()
print 'nom du jours. %s' % dt_j.nom_jour()
## -> resultat: -> nom du jour. Vendredi

dt_m = date_mois()
print 'nom du mois . %s' % dt_m.mois()
## -> resultat: -> nom du mois . Août

mois = datetime.date.today().month -1
print '%s %d %s' % (dt_j.nom_jour(), mois, dt_m.mois())
## -> resultat: -> Vendredi 7 Août
## c'est bien ce que je recherche à la base



Et tu réinvente la roue - carrée, bien sûr.

import locale
locale.setlocale(locale.LC_ALL, 'fr_FR')
d = datetime.date.today()
print d.strftime("%A %d %B")
=> vendredi 11 août

Les formats pour strftime sont documentés dans le module time.

NB : pour ta question d'origine :

class JourMois(Jour, Mois):
def __init__(self, jour=None, mois=None):
Jour.__init__(self, jour)
Mois.__init__(self, mois)


Et voili...

Avatar
DG Branciard
Merci pour la réponse
Bruno Desthuilliers wrote:
DG Branciard wrote:
Hello
Voici un exemple de code (pour exercice sur les objets)
je ne comprend pas comment je peux regrouper le deux class date_jour et
dat_mois sous un même nom de class


Et tu réinvente la roue - carrée, bien sûr.
J'avais prevenu...


import locale
locale.setlocale(locale.LC_ALL, 'fr_FR')
d = datetime.date.today()
print d.strftime("%A %d %B")
=> vendredi 11 août


C'est clair et facile avec cette fonction super

Les formats pour strftime sont documentés dans le module time.

NB : pour ta question d'origine :

class JourMois(Jour, Mois):
def __init__(self, jour=None, mois=None):
Jour.__init__(self, jour)
Mois.__init__(self, mois)


C'est bien aussi de m'avoir répondu tout et tout cela me remet sur le
chemin...
Et je reste blinder au critique c'est comme cela que j'ai avancer...


Et voili...


Super d'avoir pris du temps Merci Beaucoup

A+ DG Branciard