python十大特性 python三大特性

2021-10-13 14:02:32 字數 1843 閱讀 1868

python中也有三大特性,封裝、繼承和多型。

封裝封裝,就是只能在類的內部訪問,外部訪問屬性或方法會報異常,python中的封裝很簡單,只要在屬性前或者方法名前加上兩個下劃線就可以,如self.__name,def __eat(self)這樣就完成了屬性和方法的私有化,也就是封裝。

在python中封裝並不是很安全,有乙個方法可以從外部訪問到私有屬性和方法,使用_類名__私有屬性或方法,如有乙個card類,下面有乙個私有屬性密碼__pwd,print(_card__pwd)這樣就可以獲取到卡類下面的私有屬性密碼的值了。要做一些安全的專案,不建議使用python。

繼承python中繼承也非常簡單,定義乙個animal類,下面有乙個eat()方法,再定義乙個dog類,dog類中什麼都不寫,用pass代替。然後例項化乙個dog,讓dog繼承animal類,dog可以使用eat()方法。

class animal(obiect):

def __init__(self,name)

self.name = name

def eat(self):

print(self.name,"吃飯")

class dog(animal):

pass

dog=dog("旺財")

dog.eat()

如果子類中的方法與父類中的方法重名,優先呼叫子類中的方法,如果父類中有color屬性,子類中有name和age屬性,子類又想使用父類中的color屬性,那麼可以使用super這個關鍵字

class animal(object):

def __init__(self,color):

self.color=color

def eat(self):

print("吃飯")

class dog(animal):

def __init__(self,name,age,color):

super(dog,self).__init__(color)#呼叫父類的初始化方法

self.name=name

self.age=age

dog = dog("小黑",2,"白色")

print(dog.name,dog.age,dog.color)

多型python中本質上是沒有真正多型這種思路,只是形式上有這樣乙個多型的思路,下面看下例子

class animal(object):

def __init__(self,color):

self.color=color

def eat(self):

print("吃飯")

class cat(animal):

def eat(self):

print("貓吃魚")

class dog(animal):

def __init__(self,name,age,color):

super(dog,self).__init__(color)

self.name=name

self.age=age

def eat(self):

print("狗吃肉")

def feed(obj):

obj.eat()

an=animal("白色")#例項化animal

cat=cat("棕色")#例項化cat

dog=dog("小黃",2,"黃色")#例項化dog

feed(dog)

定義了乙個animal父類,兩個子類cat和dog裡面都有eat()方法,最後再定義乙個feed()餵養方法,傳入乙個obj物件,呼叫obj.eat(),然後例項化animal,cat和dog,分別在feed中傳入例項化物件an,cat和dog會分別列印出不同的語句,這個就是python中的多型。

python十大語法 python十大易錯語法

1.for else 不是 if 和 else 才是原配嗎?for 和 else 也是一對,而且是合法的。for i in 1,2,3,4 print i else print i,我是else 結果 4 我是else 如果在 for 和 else 之間 迴圈體內 有第三者 if 插足,也不會影響 ...

JDK8 十大特性

public listlist new arraylist test public void testlambda test public void teststream system.out.println 求和 nums stream 轉成stream filter team team null...

C 6 0 十大常用特性

c 6之前我們拼接字串時需要這樣 var name jack var results hello name 或者var name jack var results string.format hello name 但是c 6裡我們就可以使用新的字串插值特性 var name jack var res...