先決條件- Python類,物體,自我
每當使用Python完成麵向對象的編程時,我們通常都會遇到__init__
我們通常不完全了解的方法。本文介紹了主要概念__init__
但在了解之前__init__
需要一些先決條件。
__在裏麵__
這個__init__
方法類似於中的構造函數C++
和Java
。構造函數用於初始化對象的狀態。構造函數的任務是在創建類的對象時向類的數據成員初始化(分配值)。與方法一樣,構造函數也包含在創建對象時執行的語句(即指令)的集合。實例化類的對象後立即運行。該方法對於您要對對象進行的初始化非常有用。
例:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
p = Person('Nikhil')
p.say_hi()
輸出:
Hello, my name is Nikhil
了解代碼
在上麵的示例中,創建了一個人名Nikhil。創建人時,“Nikhil”作為參數傳遞,該參數將傳遞給__init__
初始化對象的方法。關鍵字self
表示類的實例,並將屬性與給定的參數綁定。同樣,可以通過傳遞不同的名稱作為參數來創建Person類的許多對象。
例:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
# Creating different objects
p1 = Person('Nikhil')
p2 = Person('Abhinav')
p3 = Person('Anshul')
p1.say_hi()
p2.say_hi()
p3.say_hi()
輸出:
Hello, my name is Nikhil Hello, my name is Abhinav Hello, my name is Anshul
__init__繼承
繼承是一類從另一類繼承或繼承屬性的能力。讓我們考慮以下示例,以了解__init__如何在繼承中工作。
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
# Calling init of parent class
A.__init__(self, something)
print("B init called")
self.something = something
obj = B("Something")
輸出:
A init called B init called
因此,父類構造函數首先被調用。但是在Python中,始終不必首先調用父類構造函數。可以修改父類或子類的__init__方法的調用順序。這可以簡單地通過在子類構造函數的主體之後調用父類構造函數來完成。
例:
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
print("B init called")
self.something = something
# Calling init of parent class
A.__init__(self, something)
obj = B("Something")
輸出:
B init called A init called
注意:要了解有關繼承的更多信息,請單擊此處。
注:本文由純淨天空篩選整理自nikhilaggarwal3大神的英文原創作品 __init__ in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。