阅读thisçš„ç”案åŽï¼Œæˆ‘了解到__init__
之外的å˜é‡ç”±è¯¥ç±»çš„所有实例共享,并且__init__
内的å˜é‡å¯¹äºŽæ¯ä¸ªå®žä¾‹éƒ½æ˜¯å”¯ä¸€çš„。
我想使用所有实例共享的å˜é‡ï¼Œä¸ºæˆ‘的类实例éšæœºåˆ†é…一个唯一的å‚数。这是我å°è¯•è¿‡çš„简çŸç‰ˆæœ¬ï¼›
from random import choice
class Chromosome(object):
variable1 = [x for x in range(1,51)]
variable2 = [x for x in range(51,101)]
def __init__(self):
self.var1 = choice(variable1)
self.var2 = choice(variable2)
我的问题是,åˆå§‹åŒ–æ–°å®žä¾‹æ—¶æ— æ³•åˆ°è¾¾å®žä¾‹å˜é‡ï¼Œé”™è¯¯æ¶ˆæ¯ä¸ºname "variable1" is not defined
,是å¦æœ‰è§£å†³æ–¹æ³•ï¼Ÿ
编辑:我想在__init__
ä¹‹å¤–åˆ›å»ºåˆ—è¡¨çš„åŽŸå› æ˜¯ä¸ºäº†èŠ‚çœå†…å˜ï¼Œå¦‚果我创建10.000个染色体,æ¯ä¸ªæŸ“色体具有大约10-15个å˜é‡ï¼Œé‚£ä¹ˆæœ€å¥½åªåˆ›å»ºä¸€æ¬¡åˆ—表,而ä¸æ˜¯ä¸ºæ¯ä¸ªæŸ“色体都创建它们。
EDIT2:如果有人想使用它,我的最终解决方案就是使用random.randrange(a,b+1,2)
ã€‚è¿™æ ·ä¼šé€‰æ‹©[a,b]范围内的éšæœºæ•°ï¼ˆä»…包括å¶æ•°ï¼‰ï¼ŒåŒ…括边界。
ç”案 0 :(得分:4)
您åªéœ€è¦åœ¨å¼•ç”¨ç±»å称时使用它å³å¯ã€‚对Python说variable1
会使它从范围ä¸æ‰¾åˆ°ä¸€ä¸ªå˜é‡ã€‚但是,您的å˜é‡æ˜¯ç±»çš„属性。
from random import choice
class Chromosome(object):
variable1 = [x for x in range(1,51)]
variable2 = [x for x in range(51,101)]
def __init__(self):
self.var1 = choice(Chromosome.variable1)
self.var2 = choice(Chromosome.variable2)
åŒæ ·ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨self.variable1
ï¼Œå› ä¸ºå®ƒåªæ˜¯ç±»çš„实例,并且也å¯ä»¥è®¿é—®ç±»å±žæ€§ã€‚
这里的主è¦æ€æƒ³æ˜¯ï¼Œå½“您访问类的任何属性或方法时,必须æ供一个å¯ä»¥è®¿é—®è¿™äº›æ–¹æ³•çš„å¯¹è±¡ï¼Œæ— è®ºæ˜¯ç±»ï¼Œå类还是其ä¸ä»»ä½•ä¸€ä¸ªçš„实例。您ä¸ä¼šå°†dict.from_keys()
称为from_keys()
,对å—?
ç”案 1 :(得分:3)
您也å¯ä»¥åªä½¿ç”¨self
而ä¸æ˜¯Chromosome
。我猜也ä¸éœ€è¦object
。
from random import choice
class Chromosome():
variable1 = [x for x in range(1,51)]
variable2 = [x for x in range(51,101)]
def __init__(self):
self.var1 = choice(self.variable1)
self.var2 = choice(self.variable2)
ç”案 2 :(得分:0)
这是å¦ä¸€ç§æ–¹å¼ï¼šï¼ˆä»¥ä¸Šç”案都是æ£ç¡®çš„)
import random
class Chromosome(object):
def __init__(self):
self.var1 = random.choice([x for x in range(1, 51)])
self.var2 = random.choice([x for x in range(51, 101)])