²é¿´: 868  |  »Ø¸´: 3

glazio

Ìú³æ (СÓÐÃûÆø)

[ÇóÖú] python: ¶à¼¶½á¹¹µÄclass£¬ÈçºÎ¶¨Ò壿

ÏÖÔÚ¼ÆËãÖÐΪÁË·½±ãÐèÒª´´½¨Ò»¸ö×Ô¶¨ÒåÀ࣬ÓÃÓÚ
1. ½á¹¹»¯±£´æÊý¾Ý
2. ͨ¹ýÀàµÄ×Ô¶¨Òå·½·¨£¬Ê¹ÓøýṹÊý¾Ý½øÐмÆËã

·­Á˺ܶà×ÊÁÏ£¬´´½¨ÀàµÄͨʽ¾ùΪ
CODE:
class userClass(object):
    def __init__(self, arg1, arg2):
        self.arg1=arg1
        self.arg2=arg2
    def userClassMethod(self):
        return self.arg1+self.arg2

Å׿ªÀûÓÃǶÌ××ÖµäµÄ·½·¨È¥ÊµÏÖ²»Ì¸£¬Èç¹ûÏÖÔÚÎÒÐèÒª¶¨ÒåÒ»¸öÊý¾Ý½á¹¹ÈçͼËùʾµÄ×Ô¶¨ÒåÀàmyClass£¬²¢Í¨¹ýmy=myClass()Óï¾ä½«ÆäʵÀý»¯²¢¸³Öµ¸ø±äÁ¿my£º


ÄÇô¸ÃÈçºÎ¶¨ÒåmyClass£¬Ê¹µÃÎÒ¿ÉÒԵõ½¸ÃÊý¾Ý½á¹¹ÖеIJ»Í¬ÇøÓòÖµ£¿ÀýÈç
À¶É«·½¿òÖеÄÊý¾ÝΪmy.k1£¬ºìÉ«·½¿òÖеÄÊý¾ÝΪmy.k2.¦¤t1£¬ÂÌÉ«·½¿òÖеÄÊý¾ÝΪmy.kn.¦¤t1[1]¡£

Èç¹û´óÏÉÃÇÓиüºÃµÄÏë·¨ºÍ½¨Ò飬СµÜҲԸϴ¶ú¹§Ìý¡£

[ Last edited by glazio on 2012-9-24 at 13:44 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

¡ï ¡ï
xzhdty: ½ð±Ò+2, ллæôÆï½«¾ü 2012-09-24 20:53:06
ÄãÕâ¸ö¿´ÆðÀ´¾ÍÊǸö¾ØÕóµÄlist°¡,¾ØÕóÓÖÊÇlistµÄlist,Òò´ËÄãµÄÊý¾Ý¹é¸ù½áµ×ÊÇlistµÄlistµÄlist,
°´ÕÕϱêºÜºÃȡֵ,pythonÖ§³ÖÁ¬ÐøÏ±ê,ËùÒÔÈç¹ûÄãµÄclassÓÐÒ»¸ödata±äÁ¿±íʾËùÓÐÊý¾Ý,Ò²¾ÍÊǸö¾ØÕóµÄlist,ÄÇô
CODE:
self.k1 = self.data[0]
self.k2.delta_t1 = self.data[1][0][1:]
self.kn.delta_t1[1] = self.data[n-1][0][1]

²»¹ýÈç¹û·ÇÒªÓÃ×Ô¶¨ÒåÀàÒ²¿ÉÒÔ,Èç¹û²»ÏëÓÃnumpyÕâÀà¿â,¿ÉÒÔ×Ô¼ºÐ´Ò»¸ö¾ØÕóÀà(ÆäʵpythonµÄÊý¾Ý½á¹¹listµÄlistºÜºÃÓÃÁË,×Ô¼ºÐ´Õâ¸ö×Ô¶¨Ò徨ÕóÀàÎÞ·ÇÒ²¾ÍÊÇÖØÐ¶¨ÒåÒ»ÏÂ,·½±ã´æÈ¡Êý¾Ý),ÀýÈç
CODE:
class myMat(object):
        """represent a matrix with size (row,col)"""
        def __init__(self, matData):
                self.row = len(matData)         # row number
                self.col = len(matData[0])         # col number
                self.data = matData[:]                # data
                self.rows = self.data                 # rows, can be accessed by index, e.g. self.rows[0]
                self.cols = [[self.rows[i][j] for i in range(self.row)] for j in range(self.col)]                                                # cols, can be accessed by index, e.g. self.cols[0]

        def __repr__(self):
                print 'myMat with size (%d * %d):' % (self.row, self.col)
                for i in range(self.row):
                        for j in range(self.col):
                                print self.rows[i][j],
                        print
                return ''

ÉÏÃæËµ¹ýÁË,ÓÉÓÚlistµÄlistÖ§³ÖÁ¬ÐøÏ±ê,Æäʵ¿ÉÒÔ²»ÓÃÖØÐ¶¨Òåk1,...knºÍkn.delta_tn,Èç¹ûºÜÏëÕâÑùȡֵ,¿ÉÒÔÔÚmyClassÕâ¸öÀàÒ»¿ªÊ¼Ïȵõ½¾ØÕóÁбíµÄ³¤¶È,È»ºóÓÃÑ­»·+execº¯ÊýÀ´Ö¸¶¨ÀàµÄ³ÉÔ±±äÁ¿.×îºóÓÉÓÚself.kn.delta_tnÒѾ­ÊÇÒ»¸ölist,ËùÒÔ¿ÉÒÔÖ±½ÓÓÃself.kn.delta_tn[1]ÕâÖÖ¸ñʽÀ´´æÈ¡sdn,ÕâÑùÄãµÄÀ¶,ºì,ÂÌÊý¾Ý¶¼¿ÉÒÔ´æÈ¡µ½.ÍêÕûµÄ²âÊÔ´úÂë:
CODE:
#! /usr/bin/env python

class myMat(object):
        """represent a matrix with size (row,col)"""
        def __init__(self, matData):
                self.row = len(matData)         # row
                self.col = len(matData[0])         # col
                self.data = matData[:]                # data
                self.rows = self.data                 # rows, can be accessed by index, e.g. self.rows[0]
                self.cols = [[self.rows[i][j] for i in range(self.row)] for j in range(self.col)]                                                # cols, can be accessed by index, e.g. self.cols[0]

        def __repr__(self):
                print 'myMat with size (%d * %d):' % (self.row, self.col)
                for i in range(self.row):
                        for j in range(self.col):
                                print self.rows[i][j],
                        print
                return ''

class myClass(object):
        """a list of myMat, each item is represented as k#"""
        def __init__(self, matList):
                self.length = len(matList)
                self.data = matList[:]
                for i in range(self.length):
                        exec('self.k'+str(i+1)+' = self.data['+str(i)+']')         # blue, k1-kn
                        for j in range(matList[0].row):                                 # red, delta_t1-delta_tn
                                exec('self.k'+str(i+1)+'.delta_t'+str(j+1)+' = self.data['+str(i)+'].rows['+str(j)+'][1:]')

        def __repr__(self):
                print 'myClass of length: %d' % (self.length)
                for i in range(self.length):
                        print 'k%d = ' % (i+1)
                        print self.data[i]
                        for j in range(self.data[i].row):
                                print 'k%d.delta_t%d = ' % (i+1, j+1)
                                exec('print self.k'+str(i+1)+'.delta_t'+str(j+1))
                        print
                return ''

# unit test
if __name__=='__main__':
        mat1 = myMat([[1,2,3],[4,5,6],[7,8,9]])
        mat2 = myMat([[11,22,33],[44,55,66],[77,88,99]])
        mat3 = myMat([[111,222,333],[444,555,666],[777,888,999]])
        myc1 = myClass([mat1,mat2,mat3])
        print mat1
        print mat2
        print mat3
        print myc1


ÔËÐеĽá¹ûÈçÏÂ:
CODE:
myMat with size (3 * 3):
1 2 3
4 5 6
7 8 9

myMat with size (3 * 3):
11 22 33
44 55 66
77 88 99

myMat with size (3 * 3):
111 222 333
444 555 666
777 888 999

myClass of length: 3
k1 =
myMat with size (3 * 3):
1 2 3
4 5 6
7 8 9

k1.delta_t1 =
[2, 3]
k1.delta_t2 =
[5, 6]
k1.delta_t3 =
[8, 9]

k2 =
myMat with size (3 * 3):
11 22 33
44 55 66
77 88 99

k2.delta_t1 =
[22, 33]
k2.delta_t2 =
[55, 66]
k2.delta_t3 =
[88, 99]

k3 =
myMat with size (3 * 3):
111 222 333
444 555 666
777 888 999

k3.delta_t1 =
[222, 333]
k3.delta_t2 =
[555, 666]
k3.delta_t3 =
[888, 999]


[Finished in 0.1s]

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
2Â¥2012-09-24 17:37:31
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

glazio

Ìú³æ (СÓÐÃûÆø)

ÉñÒ»ÑùµÄæôÆï½«¾ü£¬Ã¿´ÎÓöµ½pythonÎÊÌâ×ÜÊÇÄܵõ½libra´óÏɵļ°Ê±°ïÖú£¬·Ç³£¸Ðл£¡
3Â¥2012-09-24 18:57:33
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

glazio

Ìú³æ (СÓÐÃûÆø)

ÒýÓûØÌû:
2Â¥: Originally posted by libralibra at 2012-09-24 17:37:31
ÄãÕâ¸ö¿´ÆðÀ´¾ÍÊǸö¾ØÕóµÄlist°¡,¾ØÕóÓÖÊÇlistµÄlist,Òò´ËÄãµÄÊý¾Ý¹é¸ù½áµ×ÊÇlistµÄlistµÄlist,
°´ÕÕϱêºÜºÃȡֵ,pythonÖ§³ÖÁ¬ÐøÏ±ê,ËùÒÔÈç¹ûÄãµÄclassÓÐÒ»¸ödata±äÁ¿±íʾËùÓÐÊý¾Ý,Ò²¾ÍÊǸö¾ØÕóµÄlist,ÄÇô
se ...

²»ÖªÎªºÎ£¬ÎÒµãÆÀ·ÖÏë·îËͽð±Ò£¬µ«ÏµÍ³Ìáʾ¡°µ±Ç°»ØÌû²»ÊÇÓ¦Öú»ØÌû£¬Äú²»ÄܶԴ˽øÐнð±Ò½±ÀøÅ¶¡±£¬ÎÞÄÎ֪ͨ°æÖ÷´¦Àí£¬µ«jjdgµÄ»Ø¸´ÊÇ£º

ÄúµÄ·´À¡ÒÑ´¦Àí£º
[·´À¡] python: ¶à¼¶½á¹¹µÄclass£¬ÈçºÎ¶¨Ò壿
[ÀíÓÉ] ±ðÈËÓ¦Öúºó£¬ÎÞ·¨ÆÀ·Ö

[½ð±Ò] 0¸ö½ð±Ò
[Òâ¼û] ÄãÖ±½Ó¸ø½ð±Ò°¡

ÌØ´Ë֪ͨ¡£
4Â¥2012-09-25 12:12:13
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ glazio µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 265Çóµ÷¼Á +10 ÁºÁºÐ£Ð£ 2026-03-19 10/500 2026-03-20 19:42 by ¶¡¶¡*
[¿¼ÑÐ] 261ÇóBÇøµ÷¼Á£¬¿ÆÑо­Àú·á¸» +3 Å£Ä̺Üæ 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
[¿¼ÑÐ] 317Çóµ÷¼Á +5 Éê×ÓÉêÉê 2026-03-19 10/500 2026-03-20 15:58 by ²Ì³Ï
[¿¼ÑÐ] ±¾ÈË¿¼085602 »¯Ñ§¹¤³Ì ר˶ +18 ²»ÖªµÀ½Ðʲô£¡ 2026-03-15 20/1000 2026-03-20 13:52 by danney002
[¿¼ÑÐ] 279·ÖÇóµ÷¼Á Ò»Ö¾Ô¸211 +9 chaojifeixia 2026-03-19 10/500 2026-03-20 12:29 by lature00
[¿¼ÑÐ] ÄÜÔ´²ÄÁÏ»¯Ñ§¿ÎÌâ×éÕÐÊÕ˶ʿÑо¿Éú8-10Ãû +5 ÍÑÓ±¶ø³ö 2026-03-16 14/700 2026-03-20 09:30 by kkcoco25
[¿¼ÑÐ] 085410È˹¤ÖÇÄÜר˶317Çóµ÷¼Á£¨0854¶¼¿ÉÒÔ£© +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by ²»168
[¿¼ÑÐ] Çóµ÷¼Á +3 °µÓ¿afhb 2026-03-16 3/150 2026-03-20 00:28 by ºÓÄÏ´óѧУÓÑ
[ÂÛÎÄͶ¸å] ÉêÇë»Ø¸åÑÓÆÚÒ»¸öÔ£¬±à¼­Í¬ÒâÁË¡£µ«ÏµÍ³ÉϵÄʱ¼äû±ä£¬¸ø±à¼­ÓÖдÓʼþÁË£¬Ã»»Ø¸´ 10+3 wangf9518 2026-03-17 4/200 2026-03-19 23:55 by babero
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[¿¼ÑÐ] 324·Ö 085600²ÄÁÏ»¯¹¤Çóµ÷¼Á +3 llllkkkhh 2026-03-18 3/150 2026-03-19 14:22 by houyaoxu
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[¿¼ÑÐ] ±¾¿ÆÖ£ÖÝ´óѧÎïÀíѧԺ£¬Ò»Ö¾Ô¸»ª¿Æ070200ѧ˶£¬346Çóµ÷¼Á +4 ÎÒ²»ÊÇÒ»¸ù´Ð 2026-03-18 4/200 2026-03-19 09:11 by ¸¡ÔÆ166
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á£¬Çó¸÷λÀÏʦÊÕÁô +10 ÇïÓÐľ±± 2026-03-14 10/500 2026-03-19 05:52 by anny19840123
[¿¼ÑÐ] 334Çóµ÷¼Á +3 Ö¾´æ¸ßÔ¶ÒâÔÚ»úÐ 2026-03-16 3/150 2026-03-18 08:34 by lm4875102
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄϾ©´óѧ£¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ì£¬µ÷¼Á +4 Jy? 2026-03-16 4/200 2026-03-17 11:02 by gaoqiong
[¿¼ÑÐ] 302Çóµ÷¼Á +4 С¼Öͬѧ123 2026-03-15 8/400 2026-03-17 10:33 by С¼Öͬѧ123
[¿¼ÑÐ] 304Çóµ÷¼Á +5 ËØÄê¼ÀÓï 2026-03-15 5/250 2026-03-16 17:00 by ÎҵĴ¬Îҵĺ£
[¿¼ÑÐ] 297Ò»Ö¾Ô¸ÉϽ»085600Çóµ÷¼Á +5 Ö¸¼â°ËǧÀï 2026-03-14 5/250 2026-03-14 17:26 by a²»Ò×
[¿¼ÑÐ] 297Çóµ÷¼Á +4 ѧº£Æ¯²´ 2026-03-13 4/200 2026-03-14 11:51 by ÈÈÇéɳĮ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û