Çözüldü Python aynı sınıfa ait 2 objeyi toplama

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Musa B.

Hectopat
Katılım
1 Ekim 2017
Mesajlar
1.499
Makaleler
3
Çözümler
11
Merhaba, sorunumu net bir biçimde açıklamam zor bu yüzden kod üzerinden anlatmayı deneyeceğim:
Python:
class matris:
    def __init__(self, satir=2, sutun=2):
        self.satir = satir
        self.sutun = sutun
        self.matrix = [[0 for x in range(satir)] for y in range(sutun)] #boş 2 boyutlu liste oluşturdum
        #print(self.matrix)
    def elemanAyarla(self, sayi, x, y):
        self.matrix[x][y] = sayi
        print(self.matrix)
        print("eklendi")
    def matrisToplami(self): #Burada nasıl bir tanımlama yapmam gerektiğini çözemedim çünkü aynı sınıfa ait 2 objeyi toplamam gerekiyor.
        print("Toplama islemi basliyor!")
        for i in range(self.satir):
            for j in range(self):
                #burada toplama işlemini yapacağım
        print(self.matrix)

    def matrisCarpimi(self):
        print("carpim") #daha yazmadım
    def __del__(self):
        print("bitti") #kontrol için ekledim
obje = matris(5,4) # 1. objeyi oluşturacağım
obje2 = matris(5,4) # 2. obje
obje2.elemanAyarla(3,1,2) #bir bölümdeki elemanı değiştireceğim
obje.elemanAyarla(4,1,2) #aynı işlem
matrisToplami() # ikisini toplamam gerekiyor
 
Çözüm
+ operatörünü de kullanabilirsin, örneğin aşağıda liste olarak döndürür toplamı. Eğer sınıf nesnesi olarak döndürmek istiyorsan constructor fonksiyonda ilklendir ve + operatöründe ona göre başlatıp return edebilirsin.
Python:
class Matris:
    def __init__(self, sutun=2, satir=2):
        self.sutun = sutun
        self.satir = satir
        self.matris = [[0 for x in range(sutun)] for y in range(satir)]

    def __add__(self, other):
        return [[self.matris[i][j] + other.matris[i][j]  for j in range(self.sutun)] for i in range(self.satir)]
 
Ob1 = Matris(5, 3)
Ob2 = Matris(5, 3)
list = Ob1 + Ob2
print(list)

bitwise

Kilopat
Sosyal Tayfı
Katılım
22 Mart 2018
Mesajlar
5.360
Makaleler
1
Çözümler
48
OOP yapmak zorunda degilsen direkt numpy kullan.
Eger elle yapacaksan ayni boyutta olduklarini kontrol etmelisin.
Python:
get_n(self):
    return n

get_m(self):
    return m

get_element_at_position(self, m, n):
    return matrix[m][n]

add(self, matrix2):
    # matrix2.get_n() ve get_m esit degilse hata ver.
    # nested loop icinde toplami yazdir.


obje = matris(5,4)
obje2 = matris(5,4)
print(obje.add(obje2)) # OOP
 

Dynamics

Centipat
Katılım
23 Kasım 2021
Mesajlar
234
Çözümler
25
Yer
İzmir
+ operatörünü de kullanabilirsin, örneğin aşağıda liste olarak döndürür toplamı. Eğer sınıf nesnesi olarak döndürmek istiyorsan constructor fonksiyonda ilklendir ve + operatöründe ona göre başlatıp return edebilirsin.
Python:
class Matris:
    def __init__(self, sutun=2, satir=2):
        self.sutun = sutun
        self.satir = satir
        self.matris = [[0 for x in range(sutun)] for y in range(satir)]

    def __add__(self, other):
        return [[self.matris[i][j] + other.matris[i][j]  for j in range(self.sutun)] for i in range(self.satir)]
 
Ob1 = Matris(5, 3)
Ob2 = Matris(5, 3)
list = Ob1 + Ob2
print(list)
 
Çözüm
Yukarı