ما وظيفة self فى class

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)
```

 ما وظيفة self
2 Likes

لو تجرب الكود التالي

class Person:
  def __init__(self, name, age):
    new_name = name
    self.age = age

p1 = Person("John", 36)

print(p1.new_name)
print(p1.age)

لاحظ أنني كتبت new_name = name وحينما طبعته كتبت print(p1.new_name)

المفروض أن هذا الكود سيعمل، صحيح؟

غير صحيح!

السبب اننا هنا لم نستعمل self، الذي يشير إلى الـ object نفسه (يعني داخل p1 سيتم حفظ المتغير بعد self)

هذا مثال آخر:

class Car:
    def __init__(self):
        self.x = 5

car1 = Car()
print(car1.x)

وهذا مثال آخر

class Car:
    def __init__(self):
        x = 5

car1 = Car()
print(car1.x)

ممكن تخبرني من المثال الذي سيعمل في الحالتين ولما؟

المثال الاول هو الذى يعمل ام المثال الثانى لا يعمل بسبب عدم وجود self الذى تشير للى opject نفسه

1 Like

:ok_hand: :ok_hand:

1 Like