[Python] class __init__(self) 基本概念

George
George’s Note & Idea
5 min readJun 22, 2019
  1. 需宣告時給予初始化值
class Student:

def __init__(self, id, name):
self.id = id
self.name = name

if __name__ == '__main__':
s = Student(1, 'george')
print(s.id, s.name)

2. 直接賦予值

class Student:

def __init__(self):
self.id = 2
self.name = 'george'
self.sex = 'boy'


if __name__ == '__main__':
s = Student()
s2 = Student()

print(s.id, s.name, s.sex)
print(s2.id, s2.name, s2.sex)

3. (常見使用方式) 如果有填寫就給予初始值,若無,則賦予值。

class Student:

def __init__(self, id=1, name='george', sex='boy'):
self.id = id
self.name = name
self.sex = sex

if __name__ == '__main__':
s = Student(1, 'Peter')
s2 = Student(2, 'kate', 'girl')


print(s.id, s.name, s.sex)
print(s2.id, s2.name, s2.sex)

4. (接續3) 也可使用空值後,後續再添加屬性。

class Student:

def __init__(self, id=1, name='george', sex='boy'):
self.id = id
self.name = name
self.sex = sex
self.score = {}

if __name__ == '__main__':
s = Student(1, 'Peter')
s2 = Student(2, 'kate', 'girl')

s.height = 160
s.weight = 60
s.score['english'] = 90
s.score['music'] = 85


print(s.id, s.name, s.sex, s.score)
print(s2.id, s2.name, s2.sex, s2.score)

5. 其他? (可將屬性不放在__init__()裡面,或是之後再自行增加屬性也可)

class Student:
height = 180
weight = 79


def __init__(self, id=1, name='george', sex='boy'):
self.id = id
self.name = name
self.sex = sex

if __name__ == '__main__':
s = Student(1, 'Peter')
s2 = Student(2, 'kate', 'girl')

s.height = 160
s.weight = 60


print(s.id, s.name, s.sex, s.height, s.weight)
print(s2.id, s2.name, s2.sex, s2.height, s2.weight)

如果屬性不放在__init__()裡面,且函數又要使用屬性時呢?

class Student:
height = 1.78
weight = 80


def __init__(self, id=1, name='george', sex='boy'):
self.id = id
self.name = name
self.sex = sex
self.score = {}

def cal_BMI(self, height, weight):
bmi = weight / pow(height, 2)
return bmi


if __name__ == '__main__':
s = Student(1, 'Peter')
s2 = Student(2, 'kate', 'girl')

s.height = 1.60
s.weight = 60
s.score['english'] = 90
s.score['music'] = 85
bmi = s.cal_BMI(s.height, s.weight)

print(s.id, s.name, s.sex, s.score, bmi)
print(s2.id, s2.name, s2.sex, s2.score)

參考資料:

如果你覺得文章很棒或有幫助到您,不妨幫我點個拍手吧! 謝謝…

--

--