متغیر ها و توابع اختصاصی کدامند ؟ توضیح دهید .
متغیر ها و توابع اختصاصی کدامند ؟ توضیح دهید .
متغیر ها و توابع اختصاصی کدامند ؟ توضیح دهید .
اگر بخواهیم مهمترین متغیر موجـود در کـلاس مـاتریس را مشـخص کنـیم، بـیشـک متغیـر matrix را نام خواهیم برد. زیرا همۀ عناصر در این متغیر که از نوع لیست میباشد، وجود دارد. حـال اگر این متغیر به نوعی توسط دیگر توابع و یا حتی توسط خود کاربر از بین برود و یا خراب شود، شـیء ماتریس ما هیچ مورد استفادهاي ندارد. براي جلوگیري از چنین حادثهاي ما باید دسترسی به matrix را محدود کنیم. در پایتون اگر دو علامت خط زیر (_) را در ابتداي نام متغیرها و یا توابع یک کلاس قرار دهیم، این متغیرها یـا توابـع دیگر به روش نمادگذاري نقطهاي معمول قابل دستیابی نخواهند بود و براي کلاسی که تعریف شدهاند اختصاصی خواهند بود. البته باید توجه داشته باشـید کـه اشـیائی کـه از نـوع کـلاس حاضـر هسـتند میتوانند به این متغیرها دسترسی داشته باشند. با این قابلیت ما نام متغیر matrix را به matrix __تغییر میدهـیم و در هـر جـا کـه ایـن متغیر را بهکار بردیم، از نام جدید آن استفاده میکنیم:
class Matrix:
def __init__(self, dimension1=0, dimension2=0):
zeroList = lambda n:[0 for i in range(n)]
self.__matrix = zeroList(dimensoin1)
for i in range(len(self.__matrix))
self.__matrix[i] = zeroList(dimension2)
self.dimensions = (dimension1, dimension2)
def __str__(self):
s=”
for i in range(self.dimensions[0]):
for j in range(self.dimensions[1]):
s+=`self.__matrix[i][j]`+’\t’
s+=’ ’
return s[:-1]
def inputItems(self):
for i in range(self.dimensions[0]):
for j in range(self.dimensions[1]):
while 1:
try:
self.__matrix[i][j]=input(‘Item[‘+`i`+’][‘+`j`+’]: ‘)
break
except NameError:
pass
حال در صورتی که بخواهیم از روش نمادگذاري نقطهاي استفاده کنیم بـا اعتـراض زیـر مواجـه خواهیم شد:
>> m = Matrix(2, 3)
>>> print m.__matrix
AttributeError: Matrix instance has no attribute ‘__matrix’
با اینکه استفاده از این نحوة نگارش بهمنظور اختصاصی کردن نام متغیرها و توابع میباشـد، امـا باز هم راهی براي دسترسی به این متغیرها وجود دارد که ما پیشنهاد میکنیم از آن استفاده نکنید:
>>> m._Matrix__matrix
[[0, 0], [0, 0]]
اگر پس از نام شیء و علامت نقطه یک علامت زیرخط (_) قرار دهید و نام کلاس و سـپس نـام متغیر یا تابع را ذکر کنید، میتوانید اختصاصی بودن یک تابع یا متغیر را منحل کنید. طراح ایـن زبـان معتقد است که این نه تنها نقطه ضعف پایتون نیست، بلکه کاملاً بر اساس طراحی میباشد.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید