@ জামিলাক এবং @ জেপ্যাডিসন 3 এর উত্তরগুলি একত্রিত করে, যদি আপনাকে ইনপুট হিসাবে নপি অ্যারেগুলির বিরুদ্ধে শক্ত হয়ে ও তালিকা হিসাবে একইভাবে পরিচালনা করতে হয়, আপনার ব্যবহার করা উচিত
import numpy as np
isinstance(P, (list, tuple, np.ndarray))
এটি তালিকা, টিপল এবং আকাঙ্ক্ষিত অ্যারেগুলির সাবক্লাসগুলির বিরুদ্ধে শক্ত।
এবং আপনি যদি সিকোয়েন্সের অন্যান্য সমস্ত সাবক্লাসের বিরুদ্ধেও দৃ be় হতে চান তবে (কেবল তালিকা এবং টিপল নয়)
import collections
import numpy as np
isinstance(P, (collections.Sequence, np.ndarray))
আপনার কেন এইভাবে জিনিসগুলি করা উচিত isinstanceলক্ষ্যগুলির type(P)সাথে তুলনা না করে ? এখানে একটি উদাহরণ রয়েছে, যেখানে আমরা NewListতালিকার একটি তুচ্ছ সাবক্লাসের আচরণ এবং গবেষণা করি ।
>>> class NewList(list):
... isThisAList = '???'
...
>>> x = NewList([0,1])
>>> y = list([0,1])
>>> print x
[0, 1]
>>> print y
[0, 1]
>>> x==y
True
>>> type(x)
<class '__main__.NewList'>
>>> type(x) is list
False
>>> type(y) is list
True
>>> type(x).__name__
'NewList'
>>> isinstance(x, list)
True
সমান হয়েও xএবং yতুলনা করলে এগুলি পরিচালনা typeকরা বিভিন্ন আচরণের ফলস্বরূপ। যাইহোক, যেহেতু xএকটি সাবক্লাসের উদাহরণ list, isinstance(x,list)ব্যবহারটি পছন্দসই আচরণ এবং আচরণ করে xএবং দেয়y একই পদ্ধতিতে দেয়।
type?