Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1440 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  creer une classe pourcentage

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

creer une classe pourcentage

n°803325
theorie du​ chaos
morte et enterrée
Posté le 22-07-2004 à 15:52:18  profilanswer
 

bonjour,
j'ai besoin d'une classe pourcentage permettant de créer des instances (comme avec float, int...), d'additionner ou soustraire deux pourcentage, de multiplier ou diviser un pourcentage par un naturel.
 
ces pourcentages héritent de float et j'aimerais les limiter à deux digits. seulement, pas moyen de tronquer la valeur...
 


def __isPercent__(obj):
    """Check if object is an percent instance."""
    if not isinstance(obj, Percent):
        raise AttributeError, 'percent expected, %s found' % type(obj)        
# END __isPercent__
     
def __isNatural__(obj):
    """Check if object is an positive integer instance."""
    if not isinstance(obj, int):
        raise AttributeError, 'integer expected, %s found' % type(obj)  
    elif isinstance(obj, int) and obj < 0:
        raise AttributeError, 'natural expected'
# END __isInteger__
 
##################################################
 
class Percent(float):
     
    def __init__(self, value=-1):
        """Create a percentage.
        @param value: value of the percentage
        @type value: integer or float between 0 and 100"""
        if value < 0 or value > 100:
            raise ValueError, 'incorrect value %s' % str(value)
        float.__init__(self, round(value, 2))
    # END __init__
 
    def __add__(self, other=None):
        """Add a percentage to another.
        @param other: percentage to add
        @type other: instance of the Percent class"""
        __isPercent__(other)
        return Percent(float.__add__(self, other))  
    # END __add__
     
    def __sub__(self, other=None):
        """Substract a percentage from another.
        @param other: percentage to substract
        @type other: instance of the Percent class"""
        __isPercent__(other)
        return Percent(float.__sub__(self, other))  
    # END __sub__
     
    def __mul__(self, other=None):
        """Multiply a percentage by an int.
        @param other: factor
        @type other: integer"""
        __isNatural__(other)
        return Percent(float.__mul__(self, other))  
    # END __mul__
     
    def __floordiv__(self, other=None):
        """Divide a percentage by an int.
        @param other: denominator
        @type other: integer"""
        __isNatural__(other)
        return Percent(float.__floordiv__(self, other))  
    # END __floordiv__
     
    def __coerce__(self, other=None):
        """Handling different operand types is left to the operation."""
        return (self, other)
    # END __coerce__
     
    def getUnitar(self):
        """Return the fractional value of the percentage."""
        return round(self / 100, 2)
    # END getUnitar
 
# END Percent


 
ce que je ne comprends pas non plus, c'est qu'en commentant le contenu de ma fonction __init__, Percent(10) renvoie quand meme 10.0
je suis complètement dans le flou...

mood
Publicité
Posté le 22-07-2004 à 15:52:18  profilanswer
 

n°803387
masklinn
í dag viðrar vel til loftárása
Posté le 22-07-2004 à 16:17:32  profilanswer
 

ben 10.0 c'est l'affichage d'un float
 
et pourquoi tu veux modifier la précision de ton pourcentage dans les calculs? il suffit de limiter à la représentation et à l'impression -_-


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°803402
Taz
bisounours-codeur
Posté le 22-07-2004 à 16:23:52  profilanswer
 

 # END __init__  
 
minable ...
 
 
tu vas ou avec tes __monTrucPersoMerdique__ ? les __xxx__ sont réservé. ne les utilise pas. fait des membres statiques.
 
et vérifie tes tests, ils sont redondants
 
 
les %s' % str(value) aussi c'est redondants
 
 
float.__add__(self, other)
 
t'as vraiment le chic pour rendre le python si élégant, tout pourri et complètement obfusqué

n°803412
theorie du​ chaos
morte et enterrée
Posté le 22-07-2004 à 16:28:41  profilanswer
 

l'accueil est toujours aussi charmant à ce que je vois...

n°803415
Taz
bisounours-codeur
Posté le 22-07-2004 à 16:31:15  profilanswer
 

tu l'as bien cherché

n°803438
masklinn
í dag viðrar vel til loftárása
Posté le 22-07-2004 à 16:43:18  profilanswer
 

je dois quand même dire que j'adore le construteur par défaut (val = Percent()) qui balance direct une exception, je trouve ca ultimement classe :o


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°803481
theorie du​ chaos
morte et enterrée
Posté le 22-07-2004 à 16:56:38  profilanswer
 

je balance quoi pour faire propre?

n°803488
theorie du​ chaos
morte et enterrée
Posté le 22-07-2004 à 17:00:34  profilanswer
 

accessoirement si tu essaie de faire un int d'une string... ça renvoie une exception aussi...
 
faudrait arrêter de prendre les autres de haut... et de croire que vous êtes le bon dieu...

n°803516
masklinn
í dag viðrar vel til loftárása
Posté le 22-07-2004 à 17:14:01  profilanswer
 

int() == 0
float() == 0.0
str() == ''
list() == []
tuple() == ()
dict() == {}
 
y'aurait pas comme une constante la?
 

Citation :

accessoirement si tu essaie de faire un int d'une string... ça renvoie une exception aussi...


http://www.mangaclub.ch/urd/ebichuley/avatars/ebichu007.jpg
"%f" % value / "%d" % value > you
 
fyi c'est pas spécialement prendre les gens de haut (enfin taz si mais il peut se le permettre), c'est soit la base du langage soit de la logique de base


---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  creer une classe pourcentage

 

Sujets relatifs
Peut on créer des IHM avec python?Créer une communauté?
creer un fichier excelProblème de pourcentage pour les balises div
HTML >> Créer un 'prototype'Interdire l'accès à une classe/fonction ou à un fichier précis
HTML/CSS>>Problème de classeappelle d'une classe c# en asp.net
creer un text deroulant dans une boite texbox ? en vba[general] créer un logiciel et le vendre, faut-il une entreprise ?
Plus de sujets relatifs à : creer une classe pourcentage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR