انعكاس الثعبان ونوع التحويل
-
05-07-2019 - |
سؤال
في بيثون، وظائف مثل شارع ()، الباحث ()، تعويم ()، وما إلى ذلك تستخدم عادة لإجراء نوع التحويلات. ومع ذلك، هذه تتطلب منك أن تعرف في الوقت اللازم لتطوير ما اكتب تريد تحويله إلى. A subproblem من بعض رمز بيثون أنا أحاول أن أكتب كما يلي:
ونظرا متغيرين، foo
وbar
، والعثور على نوع من foo
. (ومن غير المعروف في الوقت اللازم لتطوير، وهذا هو رمز عام.) ثم محاولة تحويل bar
إلى أي نوع foo
هو. إذا كان هذا لا يمكن القيام به، ورمي استثناء.
وعلى سبيل المثال، دعونا نقول لكم استدعاء الدالة أن يفعل هذا conv
. سيكون توقيعه تبدو
def conv(foo, bar) :
# Do stuff.
وسوف يطلق عليه شيء من هذا القبيل:
result = conv(3.14, "2.718") # result is now 2.718, as a float.
المحلول
استخدم foo.__class__
للحصول على نوع من foo
. ثم يطلق عليه لتحويل شريط لنوع فو:
def conv(foo, bar) :
return foo.__class__(bar)
وبطبيعة الحال، وهذا يعمل فقط إذا كان نوع من foo
لديه منشئ يعرف كيفية تحويل شريط.
نصائح أخرى
والتي سيكون من الأفضل:
type(foo)(bar)
type(foo)
وهو بالتأكيد أفضل، إذا كنت تريد أن تحقق نوع ثم "نوع" هو أفضل وسيلة، وأنا على python 2.7 - 3.2.2, type()
يعمل تماما.