7.6 KiB
title | localeTitle |
---|---|
The Python Objects | كائنات بايثون |
في بيثون ، كل شيء كائن .
تمثل الكائنات مجموعة منطقية من السمات. السمات هي البيانات و / أو الوظائف. عندما يتم إنشاء كائن في Python يتم إنشاؤه بهوية ونوع وقيمة .
في اللغات الأخرى ، الأوليات هي قيم لا تحتوي على خصائص (سمات). على سبيل المثال ، في javascript undefined
، undefined
null
، boolean
، string
، number
، symbol
(الجديد في ECMAScript 2015) هي مواد أولية.
في بايثون ، لا توجد أوليات. None
، أو منطقي ، أو سلاسل ، أو أرقام ، أو حتى الدوال كلها كائنات بغض النظر عن كيفية إنشائها.
يمكننا توضيح ذلك باستخدام بعض الوظائف المدمجة:
الثوابت المضمنة None
و True
و False
هي كائنات :
نحن اختبار None
كائن هنا.
`>>> id(None) 4550218168
type(None) <class 'NoneType'> dir(None) [bool', 'class', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'le', 'lt', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook'] issubclass(type(None), object) True `
بعد ذلك ، دعونا نفحص True
.
`>>> id(True) 4550117616
type(True) <class 'bool'> dir(True) ['abs', 'add', 'and', 'bool', 'ceil', 'class', 'delattr', 'dir', 'divmod', 'doc', 'eq', 'float', 'floor', 'floordiv', 'format', 'ge', 'getattribute', 'getnewargs', 'gt', 'hash', 'index', 'init', 'int', 'invert', 'le', 'lshift', 'lt', 'mod', 'mul', 'ne', 'neg', 'new', 'or', 'pos', 'pow', 'radd', 'rand', 'rdivmod', 'reduce', 'reduce_ex', 'repr', 'rfloordiv', 'rlshift', 'rmod', 'rmul', 'ror', 'round', 'rpow', 'rrshift', 'rshift', 'rsub', 'rtruediv', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'truediv', 'trunc', 'xor', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] issubclass(type(True), object) True `
لا يوجد سبب لترك خارج False
!
`>>> id(False) 4550117584
type(False) <class 'bool'> dir(False) ['abs', 'add', 'and', 'bool', 'ceil', 'class', 'delattr', 'dir', 'divmod', 'doc', 'eq', 'float', 'floor', 'floordiv', 'format', 'ge', 'getattribute', 'getnewargs', 'gt', 'hash', 'index', 'init', 'int', 'invert', 'le', 'lshift', 'lt', 'mod', 'mul', 'ne', 'neg', 'new', 'or', 'pos', 'pow', 'radd', 'rand', 'rdivmod', 'reduce', 'reduce_ex', 'repr', 'rfloordiv', 'rlshift', 'rmod', 'rmul', 'ror', 'round', 'rpow', 'rrshift', 'rshift', 'rsub', 'rtruediv', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'truediv', 'trunc', 'xor', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] issubclass(type(False), object) True `
سلاسل ، حتى عندما تم إنشاؤها بواسطة القيم الحرفية سلسلة ، هي أيضا الكائنات .
`>>> id("Hello campers!") 4570186864
type('Hello campers!') <class 'str'> dir("Hello campers!") ['add', 'class', 'contains', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getnewargs', 'gt', 'hash', 'init', 'iter', 'le', 'len', 'lt', 'mod', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'rmod', 'rmul', 'setattr', 'sizeof', 'str', 'subclasshook', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] issubclass(type('Hello campers!'), object) True `
الشيء نفسه مع الأرقام
`>>> id(42) 4550495728
type(42) <class 'int'> dir(42) ['abs', 'add', 'and', 'bool', 'ceil', 'class', 'delattr', 'dir', 'divmod', 'doc', 'eq', 'float', 'floor', 'floordiv', 'format', 'ge', 'getattribute', 'getnewargs', 'gt', 'hash', 'index', 'init', 'int', 'invert', 'le', 'lshift', 'lt', 'mod', 'mul', 'ne', 'neg', 'new', 'or', 'pos', 'pow', 'radd', 'rand', 'rdivmod', 'reduce', 'reduce_ex', 'repr', 'rfloordiv', 'rlshift', 'rmod', 'rmul', 'ror', 'round', 'rpow', 'rrshift', 'rshift', 'rsub', 'rtruediv', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'truediv', 'trunc', 'xor', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] issubclass(type(42), object) True `
وظائف هي كائنات أيضا
في بايثون ، تعتبر الدوال كائنات من الدرجة الأولى.
تعتبر الدوال في Python أيضًا كائنات تم إنشاؤها باستخدام هوية ونوع وقيمة . هم أيضا يمكن أن تنتقل إلى وظائف أخرى:
`>>> id(dir) 4568035688
type(dir) <class 'builtin_function_or_method'> dir(dir) ['call', 'class', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'le', 'lt', 'module', 'name', 'ne', 'new', 'qualname', 'reduce', 'reduce_ex', 'repr', 'self', 'setattr', 'sizeof', 'str', 'subclasshook', 'text_signature'] issubclass(type(dir), object) True `
من الممكن أيضًا ربط الدالات بالاسم وتسمى الدالة المندمجة باستخدام هذا الاسم:
`>>> a = dir
print(a) a(a) ['call', 'class', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'le', 'lt', 'module', 'name', 'ne', 'new', 'qualname', 'reduce', 'reduce_ex', 'repr', 'self', 'setattr', 'sizeof', 'str', 'subclasshook', 'text_signature'] `
مصادر:
- انقر هنا لمعرفة المزيد.