Jenis variabel dalam python oops

Dalam pemrograman berorientasi objek, saat kami mendesain kelas, kami menggunakan variabel instan dan variabel kelas

Di Kelas, atribut dapat didefinisikan menjadi dua bagian

  • Variabel instan. Jika nilai variabel bervariasi dari objek ke objek, maka variabel tersebut disebut variabel instan
  • Variabel Kelas. Variabel kelas adalah variabel yang dideklarasikan di dalam kelas, tetapi di luar metode instance apa pun atau metode 
    Emma 10 ABC School
    Jessa 20 ABC School 

Setelah membaca artikel ini, Anda akan belajar

  • Cara membuat dan mengakses variabel kelas
  • Memodifikasi nilai variabel kelas
  • Variabel instan vs. variabel kelas
  • Perilaku variabel kelas dalam pewarisan

Daftar isi

Apa itu Variabel Kelas di Python?

Jika nilai variabel tidak bervariasi dari satu objek ke objek lainnya, jenis variabel seperti itu disebut variabel kelas atau variabel statis

Variabel kelas dibagi oleh semua instance kelas. Tidak seperti variabel instan, nilai variabel kelas tidak bervariasi dari objek ke objek,

Dalam Python, variabel Kelas dideklarasikan saat kelas sedang dibangun. Mereka tidak didefinisikan di dalam metode kelas apa pun karena ini hanya satu salinan dari variabel statis yang akan dibuat dan dibagikan di antara semua objek kelas

Misalnya, di kelas Siswa, kita dapat memiliki variabel instan yang berbeda seperti nama dan nomor rol karena setiap nama siswa dan nomor rol berbeda.

Namun, jika kita ingin memasukkan nama sekolah ke dalam kelas siswa, kita harus menggunakan variabel kelas daripada variabel instan karena nama sekolah sama untuk semua siswa. Jadi alih-alih menjaga salinan terpisah di setiap objek, kita dapat membuat variabel kelas yang akan menyimpan nama sekolah sehingga semua siswa (objek) dapat membagikannya

Kita dapat menambahkan sejumlah variabel kelas dalam sebuah kelas

Jenis variabel dalam python oops
Jenis variabel dalam python oops
Memahami Variabel Kelas

Buat Variabel Kelas

Variabel kelas dideklarasikan di dalam kelas, tetapi di luar metode instance atau metode 

Emma 10 ABC School
Jessa 20 ABC School 
9 apa pun

Dengan konvensi, biasanya ditempatkan tepat di bawah header kelas dan sebelum metode konstruktor dan metode lainnya

Contoh

class Student:
    # Class variable
    school_name = 'ABC School '
    
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

# create first object
s1 = Student('Emma', 10)
print(s1.name, s1.roll_no, Student.school_name)
# access class variable

# create second object
s2 = Student('Jessa', 20)
# access class variable
print(s2.name, s2.roll_no, Student.school_name)

Keluaran

Emma 10 ABC School
Jessa 20 ABC School 

Pada contoh di atas, kita membuat variabel kelas

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
1 dan mengaksesnya menggunakan objek dan nama kelas

Catatan. Seperti variabel biasa, variabel kelas dapat menyimpan data jenis apa pun. Kita bisa menggunakan daftar Python, Tuple Python, dan kamus Python sebagai variabel kelas

Mengakses Variabel Kelas

Kita dapat mengakses variabel statis baik dengan nama kelas atau referensi objek, tetapi disarankan untuk menggunakan nama kelas

Di Python, kita bisa mengakses variabel kelas di tempat-tempat berikut

  • Akses di dalam konstruktor dengan menggunakan parameter
    class Student:
        # Class variable
        school_name = 'ABC School '
    
        # constructor
        def __init__(self, name):
            self.name = name
            # access class variable inside constructor using self
            print(self.school_name)
            # access using class name
            print(Student.school_name)
    
    # create Object
    s1 = Student('Emma')
    2 atau nama kelas
  • Akses variabel kelas di dalam metode instance dengan menggunakan salah satu dari nama kelas
  • Akses dari luar kelas dengan menggunakan referensi objek atau nama kelas

Contoh 1. Akses Variabel Kelas di konstruktor

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
_

Keluaran

ABC School 
ABC School

Contoh 2. Mengakses Variabel Kelas dalam metode Instance dan di luar kelas

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

    # Instance method
    def show(self):
        print('Inside instance method')
        # access using self
        print(self.name, self.roll_no, self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma', 10)
s1.show()

print('Outside class')
# access class variable outside class
# access using object reference
print(s1.school_name)

# access using class name
print(Student.school_name)
_

Keluaran

Inside instance method
Emma 10 ABC School 
ABC School 

Outside class
ABC School 
ABC School 
_

Dalam contoh ini, kami mengakses variabel kelas

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
1 menggunakan nama kelas dan kata kunci
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
2 di dalam metode

Modifikasi Variabel Kelas

Umumnya, kami menetapkan nilai ke variabel kelas di dalam deklarasi kelas. Namun, kita dapat mengubah nilai variabel kelas baik di dalam kelas maupun di luar kelas

Catatan. Kita harus mengubah nilai variabel kelas menggunakan nama kelas saja

Contoh

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

    # Instance method
    def show(self):
        print(self.name, self.roll_no, Student.school_name)

# create Object
s1 = Student('Emma', 10)
print('Before')
s1.show()

# Modify class variable
Student.school_name = 'XYZ School'
print('After')
s1.show()

Keluaran

Before
Emma 10 ABC School 

After
Emma 10 XYZ School

Catatan

Praktik terbaik adalah menggunakan nama kelas untuk mengubah nilai variabel kelas. Karena jika kita mencoba mengubah nilai variabel kelas dengan menggunakan objek, variabel instan baru akan dibuat untuk objek tersebut, yang membayangi variabel kelas.

Contoh

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

# create Objects
s1 = Student('Emma', 10)
s2 = Student('Jessa', 20)

print('Before')
print(s1.name, s1.roll_no, s1.school_name)
print(s2.name, s2.roll_no, s2.school_name)

# Modify class variable using object reference
s1.school_name = 'PQR School'
print('After')
print(s1.name, s1.roll_no, s1.school_name)
print(s2.name, s2.roll_no, s2.school_name)

Keluaran

Before
Emma 10 ABC School 
Jessa 20 ABC School 

After
Emma 10 PQR School
Jessa 20 ABC School 

Variabel instan baru dibuat untuk objek s1, dan variabel ini membayangi variabel kelas. Jadi selalu gunakan nama kelas untuk memodifikasi variabel kelas

Variabel Kelas vs variabel Instance

Tabel berikut menunjukkan perbedaan antara variabel instan dan variabel kelas

Dalam Python, properti dapat didefinisikan menjadi dua bagian

  • Variabel instan. Nilai variabel instan bervariasi dari objek ke objek. Variabel instan tidak dibagikan oleh objek. Setiap objek memiliki salinan atribut instancenya sendiri
  • Variabel Kelas. Variabel kelas adalah variabel yang dideklarasikan di dalam kelas, tetapi di luar metode instance apa pun atau metode 
    Emma 10 ABC School
    Jessa 20 ABC School 
    9 . Variabel kelas dibagi oleh semua instance kelas

Baca selengkapnya. Variabel Instance di Python dengan Contoh

Instance VariableClass VariableInstance variable tidak dibagi oleh objek. Setiap objek memiliki salinannya sendiri dari variabel instance attributeClass yang digunakan bersama oleh semua instance
Variabel instan dideklarasikan di dalam konstruktor i. e. , metode
Emma 10 ABC School
Jessa 20 ABC School 
_9. Variabel kelas dideklarasikan di dalam definisi kelas tetapi di luar metode instan dan konstruktor. Itu akan dibuat ketika sebuah instance dari kelas dibuat. Itu dibuat ketika program mulai dijalankan. Perubahan yang dilakukan pada variabel-variabel ini melalui satu objek tidak akan tercermin di objek lain. Perubahan yang dilakukan pada variabel kelas akan tercermin di semua objek. Variabel Kelas vs. Variabel Instance

Contoh

Mari kita lihat contoh untuk membuat variabel kelas dan variabel instan

Emma 10 ABC School
Jessa 20 ABC School 
0

Keluaran

Emma 10 ABC School
Jessa 20 ABC School 
_1

Variabel Kelas Dalam Pewarisan

Seperti yang Anda ketahui, hanya satu salinan variabel kelas yang akan dibuat dan dibagikan di antara semua objek kelas itu

Saat kita menggunakan pewarisan, semua variabel dan metode kelas dasar tersedia untuk kelas anak. Dalam kasus seperti itu, Kami juga dapat mengubah nilai variabel kelas kelas induk di kelas anak

Kita dapat menggunakan nama kelas induk atau kelas anak untuk mengubah nilai variabel kelas kelas induk di kelas anak

Contoh

Emma 10 ABC School
Jessa 20 ABC School 
_2

Keluaran

Emma 10 ABC School
Jessa 20 ABC School 
_3

Bagaimana jika kelas anak dan kelas induk memiliki nama variabel kelas yang sama. Dalam hal ini, kelas anak tidak akan mewarisi variabel kelas dari kelas dasar. Jadi disarankan untuk membuat variabel kelas terpisah untuk kelas anak daripada mewarisi variabel kelas dasar

Contoh

Emma 10 ABC School
Jessa 20 ABC School 
_4

Keluaran

Emma 10 ABC School
Jessa 20 ABC School 
5

Penggunaan Variabel Kelas yang Salah

Dalam Python, kita harus menggunakan variabel kelas dengan benar karena semua objek berbagi salinan yang sama. Jadi, jika salah satu objek mengubah nilai variabel kelas, maka semua objek mulai merujuk ke salinan baru

Misalnya,

Contoh

Emma 10 ABC School
Jessa 20 ABC School 
_6

Keluaran

Emma 10 ABC School
Jessa 20 ABC School 
_7

Dalam contoh di atas, variabel instan

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
_7 unik untuk setiap pemain. Variabel kelas
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
8 dan
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
9 dapat diakses dan dimodifikasi oleh objek apa pun

Karena kedua objek memodifikasi variabel kelas, variabel instan baru dibuat untuk objek tertentu dengan nama yang sama dengan variabel kelas, yang membayangi variabel kelas.

Dalam kasus kami, untuk objek

ABC School 
ABC School
0 variabel instan baru
ABC School 
ABC School
1 dibuat, dan untuk objek
ABC School 
ABC School
2 variabel instan baru
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
9 dibuat

Jadi ketika Anda mencoba mengakses variabel kelas menggunakan objek

ABC School 
ABC School
0 atau
ABC School 
ABC School
2, itu tidak akan mengembalikan nilai variabel kelas yang sebenarnya

Untuk menghindarinya, selalu ubah nilai variabel kelas menggunakan nama kelas sehingga semua objek mendapatkan nilai yang diperbarui. Seperti ini

Berapa banyak jenis variabel yang ada di OOP dengan Python?

tiga berbagai jenis variabel dalam OOP dengan Python adalah. Variabel Instance. Variabel yang didefinisikan di dalam __init__ disebut variabel instan dan ini adalah level objek. Variabel Kelas/Statis. Variabel yang didefinisikan di luar metode __init__ disebut variabel kelas dan ini adalah tingkat kelas.

Apa sajakah jenis variabel dalam Python?

Jenis Variabel Python .
Angka
Rangkaian
Tuple

Apa variabel lokal dalam OOP dengan Python?

Variabel Lokal Python . Jenis variabel ini disebut variabel lokal. Misalnya, def salam(). # variabel lokal pesan = 'Halo' print('Lokal', pesan) salam() # coba akses variabel pesan # di luar fungsi sapa() cetak(pesan) Jalankan Kode. We cannot access them outside the function. These types of variables are called local variables. For example, def greet(): # local variable message = 'Hello' print('Local', message) greet() # try to access message variable # outside greet() function print(message) Run Code.

Apa jenis variabel di dalam kelas dengan Python?

Kelas Python dapat memiliki dua jenis variabel. Instance, dan Variabel Kelas .