Esto no es exactamente el punto de su pregunta real, pero como ha dicho que es un novato en Python, tal vez sea útil, y nadie más ha salido y lo ha dicho explícitamente.
Nunca hubiera arreglado el código anterior haciendo del método un método estático. O habría abandonado la clase y solo habría escrito una función:
def drawSample(samplesize,List):
sample=random.sample(List,samplesize)
return sample
Choices=range(100)
print drawSample(5,Choices)
Si tiene muchas funciones relacionadas, puede agruparlas en un módulo, es decir, ponerlas todas en el mismo archivo, llamado sample.py
por ejemplo; entonces
import sample
Choices=range(100)
print sample.drawSample(5,Choices)
O habría agregado un __init__
método a la clase y creado una instancia que tenía métodos útiles:
class Sample(object):
'''This class defines various methods related to the sample'''
def __init__(self, thelist):
self.list = thelist
def draw_sample(self, samplesize):
sample=random.sample(self.list,samplesize)
return sample
choices=Sample(range(100))
print choices.draw_sample(5)
(También cambié las convenciones de casos en el ejemplo anterior para que coincida con el estilo recomendado por PEP 8.)
Una de las ventajas de Python es que no te obliga a usar clases para todo. Puede usarlos solo cuando hay datos o estados que deberían estar asociados con los métodos, para eso son las clases. De lo contrario, puede usar funciones, que es para lo que están las funciones.