Fungsi Python Setattr (): Panduan Lengkap – Codewithaden

Kita semua tahu bahwa kita dapat menetapkan nilai ke variabel kelas melalui fungsi konstruktor dan objek. Tapi terlepas dari ini, ada satu metode alternatif: setattr () metode.

Python setattr ()

Python setattr () adalah built-in Metode yang menetapkan nilai atribut yang diberikan dari objek kelas. Setattr () dapat menetapkan Tidak ada ke atribut objek apa pun dan dapat digunakan untuk menginisialisasi atribut objek baru.

Sintaksis

Lihat sintaks berikut.

setattr(object, name, value)
 

Argumen

Fungsi menggunakan tiga parameter berikut.

obyek : Objek adalah bahwa atributnya akan diatur atau diubah.

nama : Nama adalah string yang berisi nama atribut yang akan diatur.

nilai Nilai adalah nilai yang akan ditetapkan.

Nilai pengembalian

Fungsi tidak mengembalikan apa pun. Oleh karena itu, nilai pengembaliannya Tidak ada

Program untuk menunjukkan cara kerja setAttr ()

Lihat kode berikut.

# app.py

# Creating a class of name Student
class Student:
    # Creating class attributes
    name = "Debasis"
    roll = 24


# creating class object
std = Student()

# Printing data before using setattr()
print("Name is : ", std.name)
print("Roll no is: ", std.roll)

# Now we will modify student's roll no
setattr(std, 'roll', 20)

# Printing data after modification
print("\nAfter modification: ")
print("Name is : ", std.name)
print("Roll no is: ", std.roll)
 

Keluaran

➜  pyt python3 app.py
Name is :  Debasis
Roll no is:  24

After modification:
Name is :  Debasis
Roll no is:  20
➜  pyt 

Dalam contoh di atas, kita dapat melihat bahwa kita telah mengubah nilai nomor roll dari 24 menjadi 20 menggunakan setattr () Metode, dan setelah itu, ketika kita menyebutnya, kita dapat melihat nilai yang diubah.

Saat atribut nama tidak ditemukan dan mengatur atribut ke tidak ada

Lihat kode berikut.

# app.py

# Creating a class of name Student
class Student:
    # Creating class attributes
    name = "Debasis"
    roll = 24


# creating class object
std = Student()

# Printing data before using setattr()
print("Name is : ", std.name)
print("Roll no is: ", std.roll)

# Here we will set name to None
setattr(std, 'name', None)

# Now we will set value to an attribute
# Which is not present in class

setattr(std, 'section', 'CSE171')

# Printing data after modification
print("\nAfter modification:")
print("Name is : ", std.name)
print("Roll no is: ", std.roll)
print("Section is : ", std.section)
 

Keluaran

➜  pyt python3 app.py
Name is :  Debasis
Roll no is:  24

After modification:
Name is :  None
Roll no is:  24
Section is :  CSE171
➜  pyt 

Dalam contoh di atas, kami telah menetapkan nilai atribut nama Tidak ada , jadi kita bisa belajar bahwa kita bisa menetapkan Tidak ada nilai juga.

Di sisi lain, seperti yang bisa kita lihat, tidak ada bagian atribut di kelas siswa, tetapi kami telah menggunakannya setattr () .

Jadi apa yang terjadi, dalam hal ini, adalah, setAttr () sendiri membuat atribut baru jika atribut itu tidak ada di kelas, dan kemudian memberikan nilai yang diberikan padanya.

Python setattr () dengan input pengguna

Kami menggunakan Input python () Fungsi untuk mendapatkan input dari pengguna dan meneruskan nilai itu ke fungsi setAttr ().

Lihat kode berikut.

# app.py

class Student:
    pass


stud = Student()
attr_name = input('Enter the attribute name:\n')
attr_value = input('Enter the attribute value:\n')

setattr(stud, attr_name, attr_value)

print('Data attribute =', attr_name, 'and its value =', getattr(stud, attr_name))
 

Keluaran

➜  pyt python3 app.py
Enter the attribute name:
character_name
Enter the attribute value:
Eleven
Data attribute = character_name and its value = Eleven
➜  pyt 

Python setattr () pengecualian

Kita dapat membuat atribut read-only menggunakan fungsi properti atau dekorator properti di objek.

Dalam hal ini, jika kami mencoba mengatur nilai atribut menggunakan fungsi setAttr (), kami akan mendapatkan attributeError: tidak dapat mengatur pengecualian atribut.

Lihat kode berikut.

# app.py

class Student:

    def __init__(self):
        self._name = None

    def get_name(self):
        print('get_name called')
        return self._name

    # for read-only attribute
    name = property(get_name, None)


stud = Student()

setattr(stud, 'name', 'Krunal')
 

Keluaran

➜  pyt python3 app.py
Traceback (most recent call last):
  File "app.py", line 16, in 
    setattr(stud, 'name', 'Krunal')
AttributeError: can't set attribute
➜  pyt 

Itu untuk tutorial ini.

Pos terkait

Python hasattr ()

Python repr ()

Python print ()

Python Issubclass ()

Properti Python ()

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *