iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
自我挑戰組

《雜學》 ︳MISCELLANEOUS LEARNING系列 第 21

〈入門.格物下〉︳GETTING STARTED ON CLASSES METHOD

  • 分享至 

  • xImage
  •  

          成類者,格其類而知其律,其律有常定之物事、不定之物事也。窮極律而不足表者,行成類之法也。成類之法有三,實法、類法、靜法也。實法,曰實例方法也,蚺術也。入己身而行其術也。類法,曰類別方法也,裝飾器也。入成類者而行其術也。靜法,曰靜態方法也,亦裝飾器也,入物而行其術也。今釋其法皆以前例示之。

class 人:
    五官 = '眼耳鼻口舌'
    五常 = '仁義禮智信'
    def __init__(名, 歲, 男, 女, 族, 高, 重): 
        名.歲 = 歲
        名.男 = 男 
        名.女 = 女
        名.族 = 族
        名.高 = 高
        名.重 = 重

劉畛 = 人(20,True,False,'漢',80,100) 

實法

          實法者,入己身而行其術也。蓋其律之物事皆入也,是故行術以其物事也。實法之法,同蚺術,唯己身必入也,其己身之名自定也。譬如欲知劉畛是男乎,則可行實法也,欲書其重,亦可。

class 人:
    五官 = '眼耳鼻口舌'
    五常 = '仁義禮智信'
    def __init__(名, 歲, 男, 女, 族, 高, 重): 
        名.歲 = 歲
        名.男 = 男 
        名.女 = 女
        名.族 = 族
        名.高 = 高
        名.重 = 重
        
    def 男否(名):
        if 名.男:
            print('此人男矣')
        else:
            print('此人非男矣')
    def 書其重(名):
        print(f'此人重{名.重}斤也')

劉畛 = 人(20,True,False,'漢',80,100) 
# 欲行其實法,亦己身之名點其實法也
劉畛.男否()
劉畛.書其重()

          實法男否()此人男矣,實法書其重()此人重100斤也

類法

          類法者,入成類者而行其術也。蓋其入己身之類也,是故常定者必知,不定者必不知也。類法之法,裝飾器,曰@classmethod也。其餘同蚺術也,唯不定之物事必不入也。譬如五官,常定也。雖有,不定也。書其二。

class 人:
    五官 = '眼耳鼻口舌'
    五常 = '仁義禮智信'
    def __init__(名, 歲, 男, 女, 族, 高, 重): 
        名.歲 = 歲
        名.男 = 男 
        名.女 = 女
        名.族 = 族
        名.高 = 高
        名.重 = 重
        
    def 男否(名):
        if 名.男:
            print('此人男矣')
        else:
            print('此人非男矣')
    def 書其重(名):
        print(f'此人重{名.重}斤也')
    @classmethod
    def 書五官(類):
        print(f'蓋{類.五官}')
    @classmethod
    def 書其歲(類):
        print(f'蓋{類.歲}')
    
劉畛 = 人(20,True,False,'漢',80,100) 
劉畛.書五官()
劉畛.書其歲()

          類法書五官()眼耳鼻口舌,類法書其歲()報錯,其不定,故不知歲何如也。

print(f'蓋{類.歲}')
AttributeError: type object '人' has no attribute '歲'

靜法

          靜法者,入物而行其術也。蓋不入成類之物事也,唯入物也。靜法之法,裝飾器,曰@staticmethod也。其餘同蚺術,唯入物,成類之物事皆不入矣。譬如皆可言世間好乎?,不入物而行也。小時皆讀九九歌而知九九乘法也,問一一得幾,入11而行也。

class 人:
    五官 = '眼耳鼻口舌'
    五常 = '仁義禮智信'
    def __init__(名, 歲, 男, 女, 族, 高, 重): 
        名.歲 = 歲
        名.男 = 男 
        名.女 = 女
        名.族 = 族
        名.高 = 高
        名.重 = 重
        
    def 男否(名):
        if 名.男:
            print('此人男矣')
        else:
            print('此人非男矣')
    def 書其重(名):
        print(f'此人重{名.重}斤也')
    @classmethod
    def 書五官(類):
        print(f'蓋{類.五官}')
    @classmethod
    def 書其歲(類):
        print(f'蓋{類.歲}')
    @staticmethod
    def 言世間():
        print('世間好乎?')
    @staticmethod
    def 問乘法(被乘數, 乘數):
        print(f'{被乘數}{乘數}得{被乘數*乘數}')
    
劉畛.言世間()
劉畛.問乘法(1, 1)

          靜法言世間()世間好乎?。靜法問乘法(1, 1)11得1也。皆無關乎成類之物事也。


上一篇
〈入門.格物上〉︳GETTING STARTED ON CLASSES
下一篇
〈入門.府庫〉︳GETTING STARTED ON MODULES
系列文
《雜學》 ︳MISCELLANEOUS LEARNING30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言