Opsi lain yang mungkin, tetapi itu tergantung jika apa yang Anda maksudkan sebelumnya :
undefined = object()
class Widget:
def __init__(self):
self.bar = 1
def zoom(self):
print("zoom!")
a = Widget()
bar = getattr(a, "bar", undefined)
if bar is not undefined:
print("bar:%s" % (bar))
foo = getattr(a, "foo", undefined)
if foo is not undefined:
print("foo:%s" % (foo))
zoom = getattr(a, "zoom", undefined)
if zoom is not undefined:
zoom()
keluaran:
bar:1
zoom!
Ini memungkinkan Anda bahkan memeriksa atribut Tidak Ada yang dihargai.
Tapi! Berhati-hatilah, Anda tidak sengaja membuat instance dan membandingkan undefined
beberapa tempat karena is
itu tidak akan pernah berfungsi dalam kasus itu.
Memperbarui:
karena apa yang saya peringatkan di paragraf di atas, memiliki banyak undefined yang tidak pernah cocok, saya baru saja sedikit mengubah pola ini:
undefined = NotImplemented
NotImplemented
, jangan bingung dengan NotImplementedError
, adalah built-in: itu semi-cocok dengan maksud JS undefined
dan Anda dapat menggunakan kembali definisi di mana-mana dan itu akan selalu cocok. Kelemahannya adalah "benar" di boolean dan bisa terlihat aneh di log dan tumpukan jejak (tapi Anda cepat mengatasinya ketika Anda tahu itu hanya muncul dalam konteks ini).
import string hasattr(string, "lower")