Python Language
사용자 정의 메소드
수색…
사용자 정의 메서드 객체 만들기
사용자 정의 함수 오브젝트가 사용자 정의 함수 오브젝트, 언 바운드 사용자 정의 메소드 오브젝트 또는 클래스 메소드 오브젝트 인 경우 클래스의 속성 (예 : 해당 클래스의 인스턴스를 통해)을 가져올 때 사용자 정의 메소드 오브젝트가 작성 될 수 있습니다.
class A(object):
# func: A user-defined function object
#
# Note that func is a function object when it's defined,
# and an unbound method object when it's retrieved.
def func(self):
pass
# classMethod: A class method
@classmethod
def classMethod(self):
pass
class B(object):
# unboundMeth: A unbound user-defined method object
#
# Parent.func is an unbound user-defined method object here,
# because it's retrieved.
unboundMeth = A.func
a = A()
b = B()
print A.func
# output: <unbound method A.func>
print a.func
# output: <bound method A.func of <__main__.A object at 0x10e9ab910>>
print B.unboundMeth
# output: <unbound method A.func>
print b.unboundMeth
# output: <unbound method A.func>
print A.classMethod
# output: <bound method type.classMethod of <class '__main__.A'>>
print a.classMethod
# output: <bound method type.classMethod of <class '__main__.A'>>
특성이 사용자 정의 메서드 개체 인 경우 새 메서드 개체는 검색되는 클래스가 원래 메서드 개체에 저장된 클래스와 같거나 파생 된 클래스 인 경우에만 만들어집니다. 그렇지 않으면 원래 메소드 객체가 그대로 사용됩니다.
# Parent: The class stored in the original method object
class Parent(object):
# func: The underlying function of original method object
def func(self):
pass
func2 = func
# Child: A derived class of Parent
class Child(Parent):
func = Parent.func
# AnotherClass: A different class, neither subclasses nor subclassed
class AnotherClass(object):
func = Parent.func
print Parent.func is Parent.func # False, new object created
print Parent.func2 is Parent.func2 # False, new object created
print Child.func is Child.func # False, new object created
print AnotherClass.func is AnotherClass.func # True, original object used
거북이 예
다음은 스크립트에서 여러 번 (∞) 번 호출되는 사용자 정의 함수를 사용하는 예제입니다.
import turtle, time, random #tell python we need 3 different modules
turtle.speed(0) #set draw speed to the fastest
turtle.colormode(255) #special colormode
turtle.pensize(4) #size of the lines that will be drawn
def triangle(size): #This is our own function, in the parenthesis is a variable we have defined that will be used in THIS FUNCTION ONLY. This fucntion creates a right triangle
turtle.forward(size) #to begin this function we go forward, the amount to go forward by is the variable size
turtle.right(90) #turn right by 90 degree
turtle.forward(size) #go forward, again with variable
turtle.right(135) #turn right again
turtle.forward(size * 1.5) #close the triangle. thanks to the Pythagorean theorem we know that this line must be 1.5 times longer than the other two(if they are equal)
while(1): #INFINITE LOOP
turtle.setpos(random.randint(-200, 200), random.randint(-200, 200)) #set the draw point to a random (x,y) position
turtle.pencolor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255)) #randomize the RGB color
triangle(random.randint(5, 55)) #use our function, because it has only one variable we can simply put a value in the parenthesis. The value that will be sent will be random between 5 - 55, end the end it really just changes ow big the triangle is.
turtle.pencolor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255)) #randomize color again
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow