Çö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.
Katılım
1 Ekim 2017
Mesajlar
1.638
Makaleler
4
Çözümler
13
Daha fazla  
Cinsiyet
Erkek
Merhaba, sorunumu net bir biçimde açıklamam zor bu yüzden kod üzerinden anlatmayı deneyeceğim:
[CODE lang="python" title="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
[/CODE]
 
Çö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)
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
 
+ 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
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni mesajlar

Geri
Yukarı