Sınflarda Fonksiyon Kullanımı?

Arkadaşlar merhaba, oluşturduğum sınıf içinde tanımladığım fonksiyonu çağırdığımda verdiği hata şu :
zaten init fonksiyonu içinde ki data değişkenini dışarıdan veriyorum. Hatanın nedeni tam olarak ne ? Sınıf kavramını tam anlayamadım sanırım.

Traceback (most recent call last):
File “E:/percetron_ysa.py”, line 63, in
a =perzeptron.train()
TypeError: train() missing 1 required positional argument: ‘self’

class perzeptron(object):



    def __init__(self,data,learn_rate,epoch):
        self.data = data
        self.learn_rate = learn_rate
        self.epoch = epoch


    def train(self):
        import numpy as np
        self.gewicht = np.zeros(np.size(self.data,1)-1)
       
        self.x = np.hstack(np.ones(len(self.data),1),self.data[:,1:np.size(self.data,1)])
        self.y = self.data[:,0]


        self.fehler_liste = self.fehler(self.predict(self.x))
        print("Die Fehler Nummers ist ",self.fehler_liste)


        for i in range(len(self.data)):

            self.y_perzeptron = 1 if np.sum(self.x[i]*self.gewicht) > 0 else 0

            self.gewicht = self.gewicht + self.learn_rate*(self.y[i]-self.y_perzeptron)*self.x[i]





    def fehler(self,perzeptron):

        fehler = []
        fehler_nummer = 0

        for i in range(len(perzeptron)):

            fehler_wert = self.y[i] - perzeptron[i]
            if fehler_wert != 0 :
                fehler_nummer += 1

        fehler.append(fehler_nummer)

        return fehler


    def predict(self,x):

        vorhersagen = (np.sum(self.gewicht * x,axis=1) > 0)*1

        return vorhersagen


import pandas as pd

data = pd.read_csv("C:/Users/ErenAhmet/YandexDisk/Python/Example.tsv",sep="\t",header=None)
data = data.values

Per = perzeptron(data,0.1,100)

a =perzeptron.train()

Oluşturduğunuz sınıf içindeki o fonksiyon bir metot, çünkü self parametresi alıyor. Siz o metodu sınıf üzerinden kullanmaya çalışıyorsunuz. Bir örnek üzerinden kullanmanız lazım:

Per = perzeptron(data,0.1,100)

a = Per.train()

Bir de import ifadelerini kodunuzun en başına yazsanız daha hoş olur.

cevabınız için teşekkür ederim.Hocam bir kaç şey daha sormak istiyorum.

bir fonksiyon içinde tanımladığımız değişkenleri self ile tanımladığımızda o değişkeni o sınıf içinde kullanabiliriz değil mi ?

şu şekilde :

def örnek (self):

  self.a = "abc"

burada ki değişkeni farklı fonksitonlarda kullanabilir miyiz ?

Buradan kastınızı tam anlamadım. Bir örnek verseniz iyi olur.

Hocam alttaki fonksiyon_1 de tanımladığımız self.degisken’i aynı class içerisinde farklı bir fonksiyonda kullanabiliriz değil mi ?

class örnek_sınıf():
    def __init__(self,data):
        self.data = data


     def fonksiyon_1(self):

                self.degisken = []

Evet, oradaki self nesnesinin değişken niteliğini istediğiniz yerde kullanabilirsiniz.

1 Beğeni

Lutfen sinif isimlerinizi buyuk harfle, ornek (instance) isimlerinizi kucuk harfle baslatin.


Bir fonksiyonun sinif icinde tanimli olmasi, ona sinif ismiyle erismemizi sagliyor:

class Foo:
    def f():
        print(42)

Foo.f()
#42

Fonksiyonu bir sinif ornegi (instance) uzerinden cagirmamiz, ona ornegin ilk parametre olarak paslanmasini sagliyor:

class Bar:
    def print_x(foo):
        print(foo.x)

bar = Bar()
bar.x = 42

bar.print_x()
#42
Bar.print_x(bar)
#42

bu kadar.

2 Beğeni