• 07-09-2022, 14:39:06
    #1
    Hemen soruma geceyim
    Simdiden tesekkur ederim


    class Santigrat:
        def __init__(self, derece=0):
            self.derece = derece
    
        def fahrenayt(self):
            return (self.derece * 1.8) + 32
    
        
        def get_derece(self):
        # getter methodu ptint() seklinde veri istendiginde oto calisir.    
            return self._derece
    
        
        def set_derece(self, deger):
        # setter methodu = ile atama yapildiginda oto calisir.
            if deger < -273.15:
                raise ValueError("Derecenin -273.15'nin altinda olmasi mumkun degildir!")
            self._derece = deger
    
        derece = property(get_derece, set_derece)    
    
    
    sicaklik = Santigrat(37)
    # 37 dereceli Obje yarattik. 
    
    print(sicaklik.derece) 
    # Derece degerine get methodu ile ulastik.
    
    print(sicaklik.fahrenayt())
    # Fahrenayt methoduna ulastik.
    
    sicaklik.derece = -300
    # Yeni dereceyi set methodu yardimiyla ayarladik.
    print(sicaklik.fahrenayt())
    Bu sekilde sorunsuz calisiyor arkadaslar -300de hata veriyor!
    https://www.programiz.com/python-programming/property buradan alintidir



    Sorum su: #derece = property(get_derece, set_derece) devre disi birakip! get_derece, set_derece ustune @ property yazinca ise -273.15 sinirina takilmadan islem yapmaya devam ediyor! Ikiside property vermiyormu 2 methoda neden peki 2. islem boyle sonuclaniyor?

    class Santigrat:
        def __init__(self, derece=0):
            self.derece = derece
    
        def fahrenayt(self):
            return (self.derece * 1.8) + 32
    
        @property
        def get_derece(self):
        # getter methodu ptint() seklinde veri istendiginde oto calisir.    
            return self._derece
    
        @property
        def set_derece(self, deger):
        # setter methodu = ile atama yapildiginda oto calisir.
            if deger < -273.15:
                raise ValueError("Derecenin -273.15'nin altinda olmasi mumkun degildir!")
            self._derece = deger
    
        #derece = property(get_derece, set_derece)    
    
    
    sicaklik = Santigrat(37)
    # 37 dereceli Obje yarattik. 
    
    print(sicaklik.derece) 
    # Derece degerine get methodu ile ulastik.
    
    print(sicaklik.fahrenayt())
    # Fahrenayt methoduna ulastik.
    
    sicaklik.derece = -300
    # Yeni dereceyi set methodu yardimiyla ayarladik.
    print(sicaklik.fahrenayt())
  • 07-09-2022, 14:55:17
    #2
    Selamlar. Orada hatalı bir kullanım var. Aşağıdaki gibi denerseniz olacaktır.
    # Using @property decorator
    class Celsius:
        def __init__(self, temperature=0):
            self.temperature = temperature
    
        def to_fahrenheit(self):
            return (self.temperature * 1.8) + 32
    
        @property
        def temperature(self):
            print("Getting value...")
            return self._temperature
    
        @temperature.setter
        def temperature(self, value):
            print("Setting value...")
            if value < -273.15:
                raise ValueError("Temperature below -273 is not possible")
            self._temperature = value
    
    
    # create an object
    human = Celsius(37)
    
    print(human.temperature)
    
    print(human.to_fahrenheit())
    
    coldest_thing = Celsius(-300)
  • 07-09-2022, 15:40:56
    #3
    Slowhand adlı üyeden alıntı: mesajı görüntüle
    Selamlar. Orada hatalı bir kullanım var. Aşağıdaki gibi denerseniz olacaktır.
    # Using @property decorator
    class Celsius:
        def __init__(self, temperature=0):
            self.temperature = temperature
    
        def to_fahrenheit(self):
            return (self.temperature * 1.8) + 32
    
        @property
        def temperature(self):
            print("Getting value...")
            return self._temperature
    
        @temperature.setter
        def temperature(self, value):
            print("Setting value...")
            if value < -273.15:
                raise ValueError("Temperature below -273 is not possible")
            self._temperature = value
    
    
    # create an object
    human = Celsius(37)
    
    print(human.temperature)
    
    print(human.to_fahrenheit())
    
    coldest_thing = Celsius(-300)
    tesekkur ederım