零基礎學Python注意事項(十) 類與繼承

2021-09-25 22:09:01 字數 3620 閱讀 2407

1.類=屬性+方法,其中屬性分為兩種:類屬性、例項屬性

class car():

place = 'china'

def made(self):

self.name='賓士'

print(car.place)#類屬性可以通過類名直接呼叫

#print(car.name)#不能這麼寫,因為例項屬性在方法內定義,不能通過類名直接呼叫,必須先建立物件,再通過物件呼叫方法,然後呼叫方法中的屬性

a=car()#先建立物件

a.made()#對用方法

print(a.name)#呼叫方法中的例項屬性

注意:

1.類屬性是類所有物件共有的乙個屬性,可以通過類或者物件訪問。而例項屬性每個物件都擁有乙個。

2.類屬性可以通過類名直接呼叫,例項屬性在方法內定義,不能通過類名直接呼叫,必須先建立物件,再通過物件呼叫方法,然後呼叫方法中的屬性。

3.類方法中第乙個引數必須是self,self代表的是類的例項化物件

4.必須用class定義類

2.類變數不會被例項物件改變的,必須通過類方法改變

class jingtai(object):

count = 0

ja1 = jingtai()

ja2 = jingtai()

ja2.count = 1

print(ja2.count,ja1.count)

class jingtai(object):

count = 0

def c(self):

self.count=2

return self.count

ja1 = jingtai()

ja2 = jingtai()

ja2.count = 1

print(ja2.count,ja1.count)

print(ja1.c())

print(ja1.count)

1.因為例項屬性在方法中定義,呼叫時不方便,因此定義了建構函式,在建構函式中定義的屬性都稱為例項屬性,呼叫時建立物件,直接用物件.屬性名呼叫即可,因為在建立物件時,自動將物件傳給self

class car():

place = 'china'

def __init__(self):

self.name='賓士'

def made(self):

self.name='賓士,寶馬'

print(car.place)

a=car()#先建立物件

print(a.name)

a.made()

print(a.name)

1.在方法名或者變數名前用__定義,則變為私有,無法在類的外部直接訪問,但是可以通過類的方法去訪問該私有變數的值

class student():

def __init__(self, name, score):

self.__name = name#私有屬性

self.__score = score#私有屬性

def __print_score(self):#私有方法

print('%s: %s' % (self.__name, self.__score))

def change_name(self):

self.__print_score()

return self.__name

b = student('bart simpson', 98)

print(b.change_name())

1、靜態變數和靜態方法都屬於類的靜態成員,它們與普通的成員變數和成員方法不同,靜態變數和靜態方法只屬於定義它們的類,而不屬於某乙個物件。

2、靜態變數和靜態方法都可以通過類名和物件進行訪問。

3.其中,靜態屬性就是類屬性

4..靜態方法:需要通過修飾器@staticmethod來進行修飾,靜態方法不需要多定義引數 

5.如果乙個類的方法在定義的時候,既不需要訪問例項屬性或者呼叫例項方法,不需要訪問類屬性或者呼叫類方法,可以將其定義為靜態方法。

6.靜態方法由類呼叫

class car():

place='杭州'

@staticmethod

def show_help():

print("查詢汽車資訊")

1.是類所擁有的方法,用@classmethod來標識其為類方法。對於類方法,第乙個引數必須是類物件,一般以cls作為第乙個引數,也可以有別的引數。但是第乙個必須是類物件。

2.類方法跟普通的方法區別就是可以直接通過類名.方法名的方式呼叫

class people():

country = 'china'

#類方法,用classmethod來進行修飾,跟普通的方法區別就是可以直接通過類名.方法名的方式呼叫

@classmethod

def getcountry(cls):

return cls.country

1必須用super().__init__(),去繼承父類的屬性

>>> class parent():

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

self.name=name

self.age=age

self.tall=tall

>>> class child(parent):

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

super().__init__(name,age,tall)

>>> a=child('zzz',16,180)

>>> a.name

'zzz'

>>> a.age

16>>> a.tall

180

1.若屬性定義了初始值,則不用再提供形參:

>>> class dog():

def __init__(self,name,color):

self.name=name

self.color=color

self.age=6

2.python中不支援方法的過載:即方法名相同,引數型別(引數個數不同)不同的函式,支援子類對父類方法的重寫

3.匯入模組的三種方法:

import math

import math as m

from math import sqrt

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學python 一

每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...

零基礎學Python筆記

alt n 最遠一條語句 alt p 最近一條語句 tab的兩個作用 1 縮排 2 補足 isinstance str1,str 判斷型別 s為字串 s.isalnum 所有字元都是數字或者字母,為真返回 ture,否則返回 false。s.isalpha 所有字元都是字母,為真返回 ture,否則...