Bagaimana Anda mengatur / mendapatkan nilai atribut yang t
diberikan oleh x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Nullpoet
sumber
sumber
df1
, dan variabelx = 'df1'
yaitu df1 sebagai string di var x. saya ingin mencetak bentuk df seperti ini,getattr(x, 'shape')
ataugetattr('df1', 'shape')
. Saya tahu ini tidak dapat dilakukan dengan getattr, metode lainnya.getattr(globals()[x], 'shape')
Catatan: Jawaban ini sangat usang. Ini berlaku untuk Python 2 menggunakan
new
modul yang sudah usang pada 2008 .Ada python yang dibangun di fungsi setattr dan getattr. Yang bisa digunakan untuk mengatur dan mendapatkan atribut suatu kelas.
Contoh singkat:
sumber
Jika Anda ingin menyembunyikan logika di dalam kelas, Anda mungkin lebih suka menggunakan metode pengambil yang umum seperti:
Output:
Apporach lain yang bisa menyembunyikannya lebih baik adalah menggunakan metode ajaib
__getattribute__
, tetapi saya terus mendapatkan loop tanpa akhir yang tidak dapat saya selesaikan ketika mencoba untuk mendapatkan nilai atribut di dalam metode tersebut.Perhatikan juga bahwa Anda dapat menggunakannya sebagai alternatif
vars()
. Dalam contoh di atas, Anda dapat bertukargetattr(self,varname)
denganreturn vars(self)[varname]
, tetapigetattr
mungkin lebih disukai sesuai dengan jawaban untuk Apa perbedaan antaravars
dansetattr
? .sumber