Cara mendapatkan nilai dari kelas dengan python

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

Cara mendapatkan nilai dari kelas dengan python
Cara mendapatkan nilai dari kelas dengan python
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

Sebagai contoh,

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

Bagaimana Anda mendapatkan nilai kelas dengan Python?

Python getattr() function digunakan untuk mendapatkan nilai atribut objek dan jika tidak ada atribut objek yang ditemukan, nilai default dikembalikan. Pada dasarnya, mengembalikan nilai default adalah alasan utama mengapa Anda mungkin perlu menggunakan fungsi Python getattr().

Bagaimana Anda mengakses variabel di dalam kelas dengan Python?

Variabel yang didefinisikan di dalam metode dapat diakses di dalam metode itu hanya dengan menggunakan nama variabel . Contoh – var_name. Jika Anda ingin menggunakan variabel tersebut di luar metode atau kelas, Anda harus mendeklarasikan variabel tersebut sebagai global.

Bagaimana Anda mendapatkan nilai dari kelas lain dengan Python?

kita dapat mengakses/melewati argumen/variabel dari satu kelas ke kelas lain menggunakan referensi objek. .
#Kelas1
Tes kelas
def __init__(diri sendiri)
diri sendiri. a = 10
diri sendiri. b = 20
diri sendiri. tambahkan = 0
def calc (diri)
diri sendiri. tambah = diri sendiri. diri. b

Bagaimana Anda mengakses variabel kelas?

Mengakses Variabel Kelas . Akses di dalam konstruktor dengan menggunakan parameter mandiri atau nama kelas. Akses dari luar kelas dengan menggunakan referensi objek atau nama kelas. either by class name or by object reference, but it is recommended to use the class name. Access inside the constructor by using either self parameter or class name. Access from outside of class by using either object reference or class name.