Çö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.

Kilopat
Katılım
1 Ekim 2017
Mesajlar
1.633
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

Yeni konular

Geri
Yukarı