✍️ادامه پست قبلی :
خروجی :
>>>
Queue([1, 2, 3])
Queue([0, 1, 2, 3])
Queue([0, 1, 2])
[0, 1, 2]
>>>
📌در کد بالا، hiddenlist_ به عنوان متغیر خصوصی علامت گذاری شده است، اما همچنان در خارج کد می تواند مشاهده شود. تابع جادویی "repr " برای نمایش رشته ی نمونه مورد استفاده قرار می گیرد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
خروجی :
>>>
Queue([1, 2, 3])
Queue([0, 1, 2, 3])
Queue([0, 1, 2])
[0, 1, 2]
>>>
📌در کد بالا، hiddenlist_ به عنوان متغیر خصوصی علامت گذاری شده است، اما همچنان در خارج کد می تواند مشاهده شود. تابع جادویی "repr " برای نمایش رشته ی نمونه مورد استفاده قرار می گیرد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶۵:منظور از پیشوند نام یک متد با یک تاکید اصلی چیست؟
1️⃣: برا جلوگیری از استفاده آن توسط کد خارجی
▫ ️0%(0)
2️⃣: برای علامت گذاری به عنوان یک متد خصوصی
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: برای دسترسی سریع تر
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
1️⃣: برا جلوگیری از استفاده آن توسط کد خارجی
▫ ️0%(0)
2️⃣: برای علامت گذاری به عنوان یک متد خصوصی
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: برای دسترسی سریع تر
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
✍️ مخفی کردن اطلاعات - (قسمت سوم)
توابع و صفاتی که به صورت قوی خصوصی شده باشند در ابتدایشان دارای دو _ (underline) هستند. این یعنی اینکه از خارج کد نمی توان به این مقادیر دسترسی پیدا کنند.
هدف از این کار، این نیست که اطمینان حاصل شود که آنها خصوصی نگه داشته شوند، اما برای جلوگیری از اشکالاتی مثل این است که دو زیر کلاس صفات مشترک داشته باشند.البته این صفات باز هم از خارج کد قابلست دسترسی دارند، اما با یک نام متفاوت.
تابع privatemethod__ کلاس Spam می تواند به صورت خارجی با روش _spam__privatemethod مورد استفاده قرار گیرد.
مثال:
class Spam:
__egg = 7
def print_egg(self):
print(self.egg)
s = Spam()
s.print_egg()
print(s._Spam__egg)
print(s.__egg)
خروجی :
>>>
7
7
AttributeError: 'Spam' object has no attribute '__egg'
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع و صفاتی که به صورت قوی خصوصی شده باشند در ابتدایشان دارای دو _ (underline) هستند. این یعنی اینکه از خارج کد نمی توان به این مقادیر دسترسی پیدا کنند.
هدف از این کار، این نیست که اطمینان حاصل شود که آنها خصوصی نگه داشته شوند، اما برای جلوگیری از اشکالاتی مثل این است که دو زیر کلاس صفات مشترک داشته باشند.البته این صفات باز هم از خارج کد قابلست دسترسی دارند، اما با یک نام متفاوت.
تابع privatemethod__ کلاس Spam می تواند به صورت خارجی با روش _spam__privatemethod مورد استفاده قرار گیرد.
مثال:
class Spam:
__egg = 7
def print_egg(self):
print(self.egg)
s = Spam()
s.print_egg()
print(s._Spam__egg)
print(s.__egg)
خروجی :
>>>
7
7
AttributeError: 'Spam' object has no attribute '__egg'
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست١۶۵:چگونه ویژگی a __ از کلاس b به خارج از کلاس دسترسی پیدا می کند؟
1️⃣: _b__a
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
2️⃣: _a__b
▫ ️0%(0)
3️⃣: __b_a
▫ ️|||||10%(1)
👥: 10شرکت در نظر سنجی
1️⃣: _b__a
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
2️⃣: _a__b
▫ ️0%(0)
3️⃣: __b_a
▫ ️|||||10%(1)
👥: 10شرکت در نظر سنجی
✍️توابع کلاس
توابع اشیائی که تا به حال مورد بررسی قرار گرفته اند، توسط یک فراخوان از کلاس فراخوانی میشوند و سپس به پارامتر self تابع منتقل می شوند. توابع های کلاس متفاوت هستند - آنها توسط یک کلاس فراخوانی می شوند، که به پارامتر cls تابع فرستاده می شوند.
توابع کلاس با استفاده از classmethod decorator نشانه گزاری می شوند.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def calculate_area(self):
return self.width * self.height
@classmethod
def new_square(cls, side_length):
return cls(side_length, side_length)
square = Rectangle.new_square(5)
print(square.calculate_area())
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع اشیائی که تا به حال مورد بررسی قرار گرفته اند، توسط یک فراخوان از کلاس فراخوانی میشوند و سپس به پارامتر self تابع منتقل می شوند. توابع های کلاس متفاوت هستند - آنها توسط یک کلاس فراخوانی می شوند، که به پارامتر cls تابع فرستاده می شوند.
توابع کلاس با استفاده از classmethod decorator نشانه گزاری می شوند.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def calculate_area(self):
return self.width * self.height
@classmethod
def new_square(cls, side_length):
return cls(side_length, side_length)
square = Rectangle.new_square(5)
print(square.calculate_area())
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبل :
خروجی :
>>>
25
>>>
در اینجا new_method یک تابع کلاس است و در کلاس به نام یک نمونه از کلاس فراخوانی می شود. این یک شی جدید از کلاس cls را بازمی گرداند.
از لحاظ فنی، پارامترهای self و cls فقط توافقی هستند؛ آنها را می توان به هر نام دیگری تغییر داد. با این حال، آنها به طور جهانی دنبال می شوند، بنابراین عاقلانه است که از همین نام ها استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
خروجی :
>>>
25
>>>
در اینجا new_method یک تابع کلاس است و در کلاس به نام یک نمونه از کلاس فراخوانی می شود. این یک شی جدید از کلاس cls را بازمی گرداند.
از لحاظ فنی، پارامترهای self و cls فقط توافقی هستند؛ آنها را می توان به هر نام دیگری تغییر داد. با این حال، آنها به طور جهانی دنبال می شوند، بنابراین عاقلانه است که از همین نام ها استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶۶:جاهای خالی را به صورتی که متد کلاس () sayHi ایجاد شود پر کنید.
class Person:
def __init__(self, name):
self.name = name
....................
......... sayHi(cls):
print("Hi")
1️⃣: classmethod, def
▫ ️0%(0)
2️⃣: @classmethod, def
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
3️⃣: Def, @classmethod
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
class Person:
def __init__(self, name):
self.name = name
....................
......... sayHi(cls):
print("Hi")
1️⃣: classmethod, def
▫ ️0%(0)
2️⃣: @classmethod, def
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
3️⃣: Def, @classmethod
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
✍️توابع Static
توابع استاتیک شبیه به توابع کلاس هستند، با این تفاوت که هیچ ورودی اضافی ای دریافت نمی کنند. آنها با staticmethod decorator ها مشخص می شوند.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validate_topping(topping):
if topping == "pineapple":
raise ValueError("No pineapples!")
else:
return True
ingredients = ["cheese", "onions", "spam"]
if all(Pizza.validate_topping(i) for i in ingredients):
pizza = Pizza(ingredients)
📌توابع استاتیک مانند توابع ساده عمل می کنند، به جز اینکه شما می توانید آنها را از یک نمونه از کلاس فراخوانی کنید.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع استاتیک شبیه به توابع کلاس هستند، با این تفاوت که هیچ ورودی اضافی ای دریافت نمی کنند. آنها با staticmethod decorator ها مشخص می شوند.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validate_topping(topping):
if topping == "pineapple":
raise ValueError("No pineapples!")
else:
return True
ingredients = ["cheese", "onions", "spam"]
if all(Pizza.validate_topping(i) for i in ingredients):
pizza = Pizza(ingredients)
📌توابع استاتیک مانند توابع ساده عمل می کنند، به جز اینکه شما می توانید آنها را از یک نمونه از کلاس فراخوانی کنید.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٧:کدام یک از متد های زیر به متد static شبیه تر است؟
1️⃣: def spam(x, y):
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
2️⃣: def spam(cls, x, y):
▫ ️0%(0)
3️⃣: def spam(self, x, y):
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
1️⃣: def spam(x, y):
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
2️⃣: def spam(cls, x, y):
▫ ️0%(0)
3️⃣: def spam(self, x, y):
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
✍️properties
این روشی است که دسترسی به یک ویژگی از نمونه ی کلاس را ساماندهی می کند. این روش با قرار داده property decorator در بالای تابع ایجاد می شود. یک استفاده معمول از این روش این است که یک صفت کلاس را کاری کنیم که فقط قابل خواندن (read only) باشد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@property
def pineapple_allowed(self):
return False
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
خروجی :
>>>
False
AttributeError: can't set attribute
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
این روشی است که دسترسی به یک ویژگی از نمونه ی کلاس را ساماندهی می کند. این روش با قرار داده property decorator در بالای تابع ایجاد می شود. یک استفاده معمول از این روش این است که یک صفت کلاس را کاری کنیم که فقط قابل خواندن (read only) باشد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@property
def pineapple_allowed(self):
return False
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
خروجی :
>>>
False
AttributeError: can't set attribute
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٨:برای ایجاد خواص "isAdult" جاهای خالی را پر کنید.
class Person:
def init(self, age):
self.age = int(age)
........................
def isAdult(self):
if self.age > 18......
return True
else:
............... False
1️⃣: return, ;, @property
▫ ️0%(0)
2️⃣: @property, return, :
▫ ️0%(0)
3️⃣: @property, :, return
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
👥: 7شرکت در نظر سنجی
class Person:
def init(self, age):
self.age = int(age)
........................
def isAdult(self):
if self.age > 18......
return True
else:
............... False
1️⃣: return, ;, @property
▫ ️0%(0)
2️⃣: @property, return, :
▫ ️0%(0)
3️⃣: @property, :, return
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
👥: 7شرکت در نظر سنجی
✍️properties
این روش را می توان با تعریف توابع setter / getter تنظیم کرد. تابع seter مقدار متناظر property را set می کند. getter مقدار آن را می گیرد. برای تعریف setter، شما باید از decorator با همان نام property استفاده کنید، به علاوه یک نقطه در ادامه ی آن و کلمه کلیدی setter. همین روش برای تعریف توابع getter نیز کاربرد دارد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
self._pineapple_allowed = False
@property
def pineapple_allowed(self):
return self._pineapple_allowed
@pineapple_allowed.setter
def pineapple_allowed(self, value):
if value:
password = input("Enter the password: ")
if password == "Sw0rdf1sh!":
self._pineapple_allowed = value
else:
raise ValueError("Alert! Intruder!")
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
این روش را می توان با تعریف توابع setter / getter تنظیم کرد. تابع seter مقدار متناظر property را set می کند. getter مقدار آن را می گیرد. برای تعریف setter، شما باید از decorator با همان نام property استفاده کنید، به علاوه یک نقطه در ادامه ی آن و کلمه کلیدی setter. همین روش برای تعریف توابع getter نیز کاربرد دارد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
self._pineapple_allowed = False
@property
def pineapple_allowed(self):
return self._pineapple_allowed
@pineapple_allowed.setter
def pineapple_allowed(self, value):
if value:
password = input("Enter the password: ")
if password == "Sw0rdf1sh!":
self._pineapple_allowed = value
else:
raise ValueError("Alert! Intruder!")
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه ی پست قبل :
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
print(pizza.pineapple_allowed)
خروجی :
>>>
False
Enter the password: Sw0rdf1sh!
True
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
print(pizza.pineapple_allowed)
خروجی :
>>>
False
Enter the password: Sw0rdf1sh!
True
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٩:یک دایرکتور( decorator
) را تعریف کنید که برای افزودن تنظیم کننده به egg استفاده می شود.
1️⃣: @egg.setter
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
2️⃣: @egg.getter
▫ ️0%(0)
👥: 7شرکت در نظر سنجی
) را تعریف کنید که برای افزودن تنظیم کننده به egg استفاده می شود.
1️⃣: @egg.setter
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(7)
2️⃣: @egg.getter
▫ ️0%(0)
👥: 7شرکت در نظر سنجی
✍️ کد یک بازی ساده
استفاده از اشیا هنگام مدیریت اشیاء مختلف و روابط آنها بسیار مفید است. این کار به خصوص هنگامی مفید است که شما در حال توسعه بازی با شخصیت ها و ویژگی های مختلف هستید. بیایید به یک نمونه پروژه نگاه کنیم که نشان می دهد که چگونه کلاس ها در توسعه یک بازی استفاده می شود. در زیر تابع کنترل ورودی و یک تجزیه ساده نوشته شده است.
def get_input():
command = input(": ").split()
verb_word = command[0]
if verb_word in verb_dict:
verb = verb_dict[verb_word]
else:
print("Unknown verb {}". format(verb_word))
return
if len(command) >= 2:
noun_word = command[1]
print (verb(noun_word))
else:
print(verb("nothing"))
def say(noun):
return 'You said "{}"'.format(noun)
verb_dict = {
"say": say,
}
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
استفاده از اشیا هنگام مدیریت اشیاء مختلف و روابط آنها بسیار مفید است. این کار به خصوص هنگامی مفید است که شما در حال توسعه بازی با شخصیت ها و ویژگی های مختلف هستید. بیایید به یک نمونه پروژه نگاه کنیم که نشان می دهد که چگونه کلاس ها در توسعه یک بازی استفاده می شود. در زیر تابع کنترل ورودی و یک تجزیه ساده نوشته شده است.
def get_input():
command = input(": ").split()
verb_word = command[0]
if verb_word in verb_dict:
verb = verb_dict[verb_word]
else:
print("Unknown verb {}". format(verb_word))
return
if len(command) >= 2:
noun_word = command[1]
print (verb(noun_word))
else:
print(verb("nothing"))
def say(noun):
return 'You said "{}"'.format(noun)
verb_dict = {
"say": say,
}
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبل :
while True:
get_input()
Result:
>>>
: say Hello!
You said "Hello!"
: say Goodbye!
You said "Goodbye!"
: test
Unknown verb test
✍️کد بالا از کاربر میخواهد که کلمه ورودی را وارد کند و تلاش می کند تا اولین کلمه را با دستور موجود در verb_dict مطابقت دهد. اگر این ورودی با الگوی مورد نظر مطابقت پیدا کند، تابع مربوطه فراخوانی می شود.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
while True:
get_input()
Result:
>>>
: say Hello!
You said "Hello!"
: say Goodbye!
You said "Goodbye!"
: test
Unknown verb test
✍️کد بالا از کاربر میخواهد که کلمه ورودی را وارد کند و تلاش می کند تا اولین کلمه را با دستور موجود در verb_dict مطابقت دهد. اگر این ورودی با الگوی مورد نظر مطابقت پیدا کند، تابع مربوطه فراخوانی می شود.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١٧٠:متد split بر روی ورودی چه کاری انجام می دهد ؟
1️⃣: ورودی را به حروف جداگانه تقسیم می کند
▫ ️0%(0)
2️⃣: کلمات نامناسب را حذف می کند
▫ ️0%(0)
3️⃣: ورودی را به کلمات جداگانه تقسیم می کند
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
👥: 9شرکت در نظر سنجی
1️⃣: ورودی را به حروف جداگانه تقسیم می کند
▫ ️0%(0)
2️⃣: کلمات نامناسب را حذف می کند
▫ ️0%(0)
3️⃣: ورودی را به کلمات جداگانه تقسیم می کند
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
👥: 9شرکت در نظر سنجی
✍️یک بازی ساده - (قسمت دوم)
گام بعدی این است که از کلاسها برای نمایش اشیاء بازی استفاده کنید.
class GameObject:
class_name = ""
desc = ""
objects = {}
def __init__(self, name):
self.name = name
GameObject.objects[self.class_name] = self
def get_desc(self):
return self.class_name + "\n" + self.desc
class Goblin(GameObject):
class_name = "goblin"
desc = "A foul creature"
goblin = Goblin("Gobbly")
def examine(noun):
if noun in GameObject.objects:
return GameObject.objects[noun].get_desc()
else:
return "There is no {} here.".format(noun)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
گام بعدی این است که از کلاسها برای نمایش اشیاء بازی استفاده کنید.
class GameObject:
class_name = ""
desc = ""
objects = {}
def __init__(self, name):
self.name = name
GameObject.objects[self.class_name] = self
def get_desc(self):
return self.class_name + "\n" + self.desc
class Goblin(GameObject):
class_name = "goblin"
desc = "A foul creature"
goblin = Goblin("Gobbly")
def examine(noun):
if noun in GameObject.objects:
return GameObject.objects[noun].get_desc()
else:
return "There is no {} here.".format(noun)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبل :
ما یک کلاس Goblin ایجاد کردیم که از کلاس GameObjects به ارث برده می شود. ما همچنین یک تابع جدید را بررسی کردیم که توضیحات اشیا را باز می گرداند. اکنون ما می توانیم یک لغت جدید "Examine" را به فرهنگ لغت مان اضافه کنیم و آن را امتحان کنیم!
verb_dict = {
"say": say,
"examine": examine,
}
این کد را با مثال قبلی خود ترکیب کنید و برنامه را اجرا کنید.
>>>
: say Hello!
You said "Hello!"
: examine goblin
goblin
A foul creature
: examine elf
There is no elf here.
:
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
ما یک کلاس Goblin ایجاد کردیم که از کلاس GameObjects به ارث برده می شود. ما همچنین یک تابع جدید را بررسی کردیم که توضیحات اشیا را باز می گرداند. اکنون ما می توانیم یک لغت جدید "Examine" را به فرهنگ لغت مان اضافه کنیم و آن را امتحان کنیم!
verb_dict = {
"say": say,
"examine": examine,
}
این کد را با مثال قبلی خود ترکیب کنید و برنامه را اجرا کنید.
>>>
: say Hello!
You said "Hello!"
: examine goblin
goblin
A foul creature
: examine elf
There is no elf here.
:
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١٧١:چرا Goblin از GameObject به ارث برده است؟
1️⃣: Goblin
یک ویژگی GameObject است
▫ ️||||||13%(1)
2️⃣: Goblin
نوعی GameObject است
▫ ️0%(0)
3️⃣: Goblin
نمونه ای از GameObject است
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
👥: 8شرکت در نظر سنجی
1️⃣: Goblin
یک ویژگی GameObject است
▫ ️||||||13%(1)
2️⃣: Goblin
نوعی GameObject است
▫ ️0%(0)
3️⃣: Goblin
نمونه ای از GameObject است
▫ ️||||||||||||||||||||||||||||||||||||||||||||88%(7)
👥: 8شرکت در نظر سنجی
✍️یک بازی ساده - (قسمت سوم)
این کد جزئیات بیشتری را به کلاس Goblin اضافه می کند و به شما اجازه می دهد با Goblins مبارزه کنید.
class Goblin(GameObject):
def __init(self, name):
self.class_name = "goblin"
self.health = 3
self._desc = " A foul creature"
super().__init(name)
@property
def desc(self):
if self.health >=3:
return self._desc
elif self.health == 2:
health_line = "It has a wound on its knee."
elif self.health == 1:
health_line = "Its left arm has been cut off!"
elif self.health <= 0:
health_line = "It is dead."
return self._desc + "\n" + health_line
@desc.setter
def desc(self, value):
self._desc = value
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
این کد جزئیات بیشتری را به کلاس Goblin اضافه می کند و به شما اجازه می دهد با Goblins مبارزه کنید.
class Goblin(GameObject):
def __init(self, name):
self.class_name = "goblin"
self.health = 3
self._desc = " A foul creature"
super().__init(name)
@property
def desc(self):
if self.health >=3:
return self._desc
elif self.health == 2:
health_line = "It has a wound on its knee."
elif self.health == 1:
health_line = "Its left arm has been cut off!"
elif self.health <= 0:
health_line = "It is dead."
return self._desc + "\n" + health_line
@desc.setter
def desc(self, value):
self._desc = value
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge