Cara mengubah nilai variabel kelas dengan python

Pemrograman berorientasi objek Python memungkinkan variabel untuk digunakan di tingkat kelas atau tingkat contoh di mana variabel hanyalah simbol yang menunjukkan nilai yang Anda gunakan dalam program.  

Di tingkat kelas, variabel disebut sebagai variabel kelas sedangkan variabel di tingkat instance disebut sebagai variabel instan. Mari kita pahami variabel kelas dan variabel instan melalui contoh sederhana −

# Class Shark
class Shark:
animal_type= 'fish' # Class Variable
def __init__(self, name, age):
self.name = name
self.age = age

# Creating objects of Shark class
obj1 = Shark("Jeeva", 54)
obj2 = Shark("Roli", 45)

print ("Printing class variable using two instances")
print ("obj1.animal_type =", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

#Let's change the class variable using instance variable
obj1.animal_type = "BigFish"

print ("\nPrinting class variable after making changes to one instance")
print ("obj1.animal_type=", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

Dalam program di atas, kami telah membuat kelas Shark dan kemudian kami mencoba mengubah variabel kelas menggunakan objek, ini akan membuat variabel instan baru untuk objek tertentu dan variabel ini membayangi variabel kelas

Saat Anda mendefinisikan kelas menggunakan kata kunci

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_3, Python membuat objek dengan nama yang sama dengan nama kelas. Sebagai contoh

class HtmlDocument: pass

Code language: Python (python)

Contoh ini mendefinisikan kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_4 dan objek

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4. Objek

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4 memiliki properti

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
7

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)

Dan

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_8 memiliki tipe

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
9

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_

Ini juga merupakan turunan dari kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_9

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)

Variabel kelas terikat ke kelas. Mereka dibagikan oleh semua instance dari kelas itu

Contoh berikut menambahkan variabel kelas

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
_1 dan

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
2 ke kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)

Baik

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
_1 dan

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
2 adalah variabel kelas dari kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4. Mereka terikat pada kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_4

Dapatkan nilai variabel kelas

Untuk mendapatkan nilai variabel kelas, Anda menggunakan notasi titik (

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
8). Sebagai contoh

print(HtmlDocument.extension) # html print(HtmlDocument.version) # 5

Code language: Python (python)

Jika Anda mengakses variabel kelas yang tidak ada, Anda akan mendapatkan pengecualian

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
9. Sebagai contoh

HtmlDocument.media_type

Code language: Python (python)

Kesalahan

AttributeError: type object 'HtmlDocument' has no attribute 'media_type'

Code language: Python (python)

Cara lain untuk mendapatkan nilai variabel kelas adalah dengan menggunakan fungsi

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
0. Fungsi

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_0 menerima objek dan nama variabel. Ini mengembalikan nilai variabel kelas. Sebagai contoh

extension = getattr(HtmlDocument, 'extension') version = getattr(HtmlDocument, 'version') print(extension) # html print(version) # 5

Code language: Python (python)

Jika variabel kelas tidak ada, Anda juga akan mendapatkan pengecualian

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
9. Untuk menghindari pengecualian, Anda dapat menentukan nilai default jika variabel kelas tidak ada seperti ini

media_type = getattr(HtmlDocument, 'media_type', 'text/html') print(media_type) # text/html

Code language: Python (python)

Tetapkan nilai untuk variabel kelas

Untuk menetapkan nilai variabel kelas, Anda menggunakan notasi titik

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
0

atau Anda dapat menggunakan fungsi bawaan

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_3

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
1

Karena Python adalah bahasa yang dinamis, Anda dapat menambahkan variabel kelas ke kelas pada waktu proses setelah Anda membuatnya. Misalnya, berikut ini menambahkan variabel kelas

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_4 ke kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
2

Demikian pula, Anda dapat menggunakan fungsi

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
6

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
3

Hapus variabel kelas

Untuk menghapus variabel kelas saat runtime, Anda menggunakan fungsi

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
7

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
4

Atau Anda dapat menggunakan kata kunci

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
8

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
5

Penyimpanan variabel kelas

Python menyimpan variabel kelas di

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_9 atribut.

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_9 adalah proxy pemetaan, yang merupakan kamus. Sebagai contoh

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
6

Keluaran

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
7

Seperti yang ditunjukkan dengan jelas pada keluaran, ________16______9 memiliki tiga variabel kelas.

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
1,

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
4, dan

print(isinstance(HtmlDocument, type)) # True

Code language: Python (python)
2 selain variabel kelas yang telah ditentukan sebelumnya

Python tidak mengizinkan Anda untuk mengubah ________16______9 secara langsung. Misalnya, berikut ini akan menghasilkan kesalahan

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
_8

Keluaran

print(HtmlDocument.__name__) # HtmlDocument

Code language: Python (python)
_9

Namun, Anda dapat menggunakan fungsi

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_6 atau notasi titik untuk secara tidak langsung mengubah atribut

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
9

Juga, kunci dari

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
_9 adalah string yang akan membantu Python mempercepat pencarian variabel

Meskipun Python memungkinkan Anda untuk mengakses variabel kelas melalui kamus

class HtmlDocument: extension = 'html' version = '5'

Code language: Python (python)
9, itu bukan praktik yang baik. Juga, itu tidak akan berfungsi dalam beberapa situasi. Sebagai contoh

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_0

Atribut kelas yang dapat dipanggil

Atribut kelas dapat berupa objek apa pun seperti fungsi

Saat Anda menambahkan fungsi ke kelas, fungsi tersebut menjadi atribut kelas. Karena suatu fungsi dapat dipanggil, atribut kelas disebut atribut kelas yang dapat dipanggil. Sebagai contoh

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_1

Keluaran

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
_2

Dalam contoh ini,

HtmlDocument.media_type

Code language: Python (python)
_0 adalah atribut kelas dari kelas

print(type(HtmlDocument)) # <class 'type'>

Code language: Python (python)
4. Nilainya adalah fungsi

Bisakah kita mengubah nilai variabel kelas dengan Python?

Umumnya, kita 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.

Bisakah variabel kelas diubah?

Objek apa pun dapat mengubah nilai variabel kelas , tetapi variabel kelas juga dapat dimanipulasi tanpa membuat instance kelas.

Bagaimana Anda menetapkan nilai ke variabel kelas dengan Python?

Gunakan notasi titik atau fungsi setattr() untuk menyetel nilai atribut kelas . Python adalah bahasa yang dinamis. Oleh karena itu, Anda dapat menetapkan variabel kelas ke kelas saat runtime. Python menyimpan variabel kelas dalam atribut __dict__.

Bisakah Anda mengedit kelas dengan Python?

Kelas bawaan tidak dapat dimodifikasi , tetapi Anda dapat "menyembunyikan" kelas bawaan (atau yang lain tentunya) dengan salah satu nama yang sama.