本章,繼續對CSDN技能樹的一些例子進行了改進說明和實踐。希望能幫助在技能樹游泳的哥們。
原來的例子,寫的注解太少了,沒用的基本概念解釋太多,花了時間看的,反而困惑了。再加上調用了choice這個隨機取值函數,搞的結果更加玄乎,這個是一個培訓的文案例子,建議修正。
# -*- coding: UTF-8 -*-
from random import choice
class Divergence:
def __init__(self,name='robot'):
self.name = name
pass
def getChoice(self,name=None):
if name is not None:
self.name = name
self.__lists = ['剪刀','石頭','布']
result = choice(self.__lists)
print('類名叫',self.name,':隨機選擇了>',result)
上述代碼,創建了一個Divergence的類,
其中,
def init(self,name=‘robot’):
self.name = name
pass
定義了一個類的初始化,這裡除了,self參數外,還定義了,name的參數,同時他的默認初始值為‘robot’。
def getChoice(self,name=None):
if name is not None:
self.name = name
self.__lists = [‘剪刀’,‘石頭’,‘布’]
result = choice(self.__lists)
print(‘類名叫’,self.name,‘:隨機選擇了>’,result)
定義了一個類的方法,該方法從內部的列表裡面,隨機取一個值輸出,也就是實現了猜拳的功能。
上述例子,我們手動添加了類的初始化構造方法,init.
而且,在init除了,self參數外,還有其他參數name,此為有初始化的創建。
如果,根本不給init類的構造方法,或者,給出了構造方法,但是,輸入的初始化參數只有self,這個就是無初始化參數的創建類了。
如果不給出類的構造方法,Python會自己給出默認的構造方法,這個在之前的討論中已經提到了。
#實例化對象的時候傳遞name參數
d = Divergence('A')
d.getChoice()
【本例實例化的時候,輸入了參數’A’,初始化的時候就把類的名稱改成A了,】
類名叫 A :隨機選擇了> 布
【更改輸入參數】
#實例化對象的時候傳遞name參數
d = Divergence('我是誰')
d.getChoice()
類名叫 我是誰 :隨機選擇了> 剪刀
【案,完全不要管“隨機選擇了>”的結果,只要有輸出就對了,因為設計就是一個隨機數】
【現在,我們不給他輸入參數】
#實例化對象的時候傳遞name參數
d = Divergence()
d.getChoice()
類名叫 robot :隨機選擇了> 剪刀
這時候,類名就變成了我們一開始設定的默認名字:robot
現在我們在重新寫一下類的初始化定義,這一次,我們給了類的初始化定義,但是,我們pass了,裡面沒有具體東西,我們看看結果:
# -*- coding: UTF-8 -*-
from random import choice
class Divergence:
def __init__(self):
pass
def getChoice(self,name=None):
self.__lists = ['剪刀','石頭','布']
result = choice(self.__lists)
print('類名叫',self,':隨機選擇了>',result)
#實例化對象的時候傳遞name參數
d = Divergence()
d.getChoice()
類名叫 <main.Divergence object at 0x000002087EED2BC8> :隨機選擇了> 布
OK,我們看的現在編譯器給了他一個好名字:
main.Divergence object at 0x000002087EED2BC8>
再暴力一點,這次完全不寫初始化的了,完全不寫
# -*- coding: UTF-8 -*-
from random import choice
class Divergence:
def getChoice(self,name=None):
self.__lists = ['剪刀','石頭','布']
result = choice(self.__lists)
print('類名叫',self,':隨機選擇了>',result)
#實例化對象的時候傳遞name參數
d = Divergence()
d.getChoice()
輸出:
類名叫 <main.Divergence object at 0x000002087EEDA548> :隨機選擇了> 剪刀
好像代碼指針變了一下。
相信寫到這裡,有關類的初始化參數的討論就比較清楚了。
從給出的列表,元組或字符串的隨機項中,隨機返回一個項目:
#!/usr/bin/python
import random
print "choice([1, 2, 3, 5, 9]) : ", random.choice([1, 2, 3, 5, 9])
print "choice('A String') : ", random.choice('A String')
choice([1, 2, 3, 5, 9]) : 5
choice(‘A String’) : S
【
案,這裡,choice函數從[1, 2, 3, 5, 9]列表中,隨機取到了一個數5,
從字符串,‘A String’,中隨機取到了一個字符S
】