日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python的模块和类_Python模块和类.md

發(fā)布時(shí)間:2025/3/19 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的模块和类_Python模块和类.md 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模塊的定義

代碼的層次結(jié)構(gòu)

對(duì)于python的層次結(jié)構(gòu)一般為包->模塊

包也就是文件夾,但是文件夾下必須有文件"init.py"那么此文件夾才可以被識(shí)別為包。"init.py"文件可以為空,也可以不為空。不為空的情況以后詳細(xì)寫

模塊其實(shí)就是.py文件

類的基礎(chǔ)

基本概念

在模塊中定義一個(gè)類,類的最基本結(jié)構(gòu)如下:

#對(duì)于模塊的說明

'a test module'

#作者

__author__ = 'liyue'

#定義一個(gè)類名稱為ClassDemo,繼承類頂級(jí)類object

class ClassDemo(object):

#定義一個(gè)類的成員函數(shù)

def sayHello(x):

print("Hello:%s" % x)

#下面的代碼有兩個(gè)作用:

# 1.調(diào)試或者執(zhí)行當(dāng)前文件,也就是ClassDemo時(shí)候,那么會(huì)執(zhí)行下面代碼

# 2.如果是其他文件調(diào)用當(dāng)前文件,那么下面代碼避免當(dāng)前文件重復(fù)執(zhí)行'''

if __name__ == "__main__":

#測(cè)試本文件

ClassDemo.sayHello('li')

類的調(diào)用

下面演示了怎么調(diào)用另一個(gè)模塊的類:

#對(duì)于模塊的說明

'a demo of call class'

#作者

__author__ = 'liyue'

#導(dǎo)入其他模塊有兩種寫法:

# import modulename.classname as 別名

# from moudlename imprt classname as 別名

#import FunctionDemo.ClassTest as ct

from FunctionDemo import ClassTest as ct

class ClassCall:

def testMain():

#將當(dāng)前的類名稱傳入

funInstance = ct.ClassDemo()

funInstance.sayHello()

#普通的調(diào)用傳入

ct.ClassDemo.sayHello('ClassCall')

if __name__ == '__main__':

#調(diào)用模塊ClassTest的類

ClassCall.testMain()

在這里要注意對(duì)于import的兩種方式使用細(xì)節(jié)。在python中重要關(guān)鍵字都是用兩個(gè)下劃線作為標(biāo)志,要注意寫法且自己定義時(shí)候不能重名。

變量的作用域

使用單下劃線作為前綴的變量:_XXX表明這是一個(gè)私有的變量。

這個(gè)私有的作用主要是用于編碼規(guī)范,不能完全防止訪問此變量。例如可以通過_classname_XXX的方式,且此此方式不是固定的。

對(duì)于變量的訪問最好通過函數(shù)封裝來完成

python的Syntactic sugar是需要特別注意的,一個(gè)函數(shù)沒有入?yún)?#xff0c;那么調(diào)用時(shí)候隱含了一個(gè)入?yún)⒁簿褪莝elf。也就是說對(duì)于一個(gè)函數(shù):

def fun(paraA);

pass

其真實(shí)的聲明是這樣的:

def fun(self, paraA):

pass

上述內(nèi)容代碼:

#對(duì)于模塊ClassTest.py的說明

'a test module'

#作者

__author__ = 'liyue'

#定義一個(gè)類名稱為ClassDemo,繼承類頂級(jí)類object

class ClassDemo(object):

#定義一個(gè)類的成員函數(shù)

def sayHello(x):

print("Hello:%s" % x)

name = ''

_age = 0

#定義一個(gè)初始化函數(shù)

def __init__(self, name, age):

self.name = name

self._age = age

#定義私有函數(shù)

def getterName(self):

return self.name

def _getterAge(self):

return self._age

def pintNameAndAge(self):

print('Name is:%s Age is:%s' % (self.getterName(), self._getterAge()))

#下面的代碼有兩個(gè)作用:

# 1.調(diào)試或者執(zhí)行當(dāng)前文件,也就是ClassDemo時(shí)候,那么會(huì)執(zhí)行下面代碼

# 2.如果是其他文件調(diào)用當(dāng)前文件,那么下面代碼避免當(dāng)前文件重復(fù)執(zhí)行'''

if __name__ == "__main__":

#測(cè)試本文件

ClassDemo.sayHello('li')

#測(cè)試函數(shù)的封裝

cd = ClassDemo('zhangsan', 20)

cd.pintNameAndAge()

對(duì)象信息

可以用type來獲取對(duì)象信息,type的返回值是類

對(duì)于有繼承關(guān)系的類而言用isInstance判斷,所以通常用isInstance即可

#對(duì)于模塊Animal.py的說明

'a demo of class type'

#作者

__author__ = 'liyue'

class Animal(object):

pass

class Dog(Animal):

pass

class Cat(Animal):

pass

class PrintInfo(object):

def testMain():

a = Animal()

d = Dog()

c = Cat()

print('Animal and Dog isInstance: %s' % isinstance(Animal, Dog))

print('a and Dog Animal: %s' % isinstance(a, Animal))

print("c's type is: %s" % type(c))

if __name__ == '__main__':

PrintInfo.testMain()

實(shí)例屬性和類屬性

#對(duì)于模塊Animal.py的說明

'a demo of class type'

#作者

__author__ = 'liyue'

class Animal(object):

name = 'an animal'

class PrintInfo(object):

def testMain():

a = Animal()

#沒有綁定新的類屬性,輸出默認(rèn)值

print(a.name)

#給實(shí)例綁定了類屬性,輸出實(shí)例的類屬性值

a.name = 'a dog'

print(a.name)

#類本身的屬性值不變

print(Animal.name)

#刪除實(shí)例綁定的類屬性值

del a.name

#此時(shí)又輸出默認(rèn)的值

print(a.name)

if __name__ == '__main__':

PrintInfo.testMain()

總結(jié)

以上是生活随笔為你收集整理的python的模块和类_Python模块和类.md的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。