다음 예에서 미래의 상황의 문맥에 따라 상수를 선택할 수 있습니다.클래스를 사용하는 예제를 올바르게 구현하려면 어떻게해야합니까?
class Constants:
SPEEDLIGHT = 3 * 10**8
GRAVITY = 9.81
C = Constants()
print(C.GRAVITY)
>> 9.81
각 수량이 고정 상수이기 때문에 그리 어렵지 않았습니다. 그러나 기능을 위해 비슷한 것을하고 싶다고 가정 해 봅시다. 아래의 첫 번째 코드 블록에서는 integerble 변수 x
과 고정 매개 변수 a
및 b
의 두 가지 분포를 지정합니다.
class IntegrableDistribution:
def Gaussian(x,a,b):
cnorm = 1/(b * (2 * pi)**(1/2))
return cnorm * np.exp((-1) * (x-a)**2/(2 * b**2))
# Gaussian = Gaussian(x,a,b)
def Lognormal(x,a,b):
cnorm = 1/(b * (2 * pi)**(1/2))
return cnorm * exp((-1) * (np.log(x)-a)**2/(2 * b**2))/x
# Lognormal = Lognormal(x,a,b)
내가 호출 할 수 있도록 배포판의 이름을 지정하려고했습니다. 결과적으로 위의 코드는 오류 메시지가됩니다. 이 다음 코드 블록에서는 입력을 사용하여 통합을위한 배포를 선택하려고합니다 (매우 비효율적이라고 생각하지만).
Integrable = IntegrableDistribution()
class CallIntegrableDistribution:
def Model():
def Pick():
"""
1 : Gaussian Distribution
2 : Lognormal Distribution
"""
self.cmnd = cmnd
cmnd = int(input("Pick a Distribution Model: "))
return cmnd
self.cmnd = cmnd
if cmnd == 1:
Distribution = Integrable.Gaussian
if cmnd == 2:
Distribution = Integrable.Lognormal
return Distribution
OR ALTERNATIVELY
cmnd = {
1: Gaussian,
2: Lognormal,
}
저는 배포판의 문제점에 대해서는별로 관심이 없습니다. 나는 단지 내 알려진 것들과 알려지지 않은 것들을 보여주기 위해 그것을 적용 할 뿐이다. 클래스 또는 사전을 사용하여 올바르게 수행 할 수있는 방법은 무엇입니까?
1. 오류가 무엇입니까? 2. 함수에 대문자를 사용하지 마십시오. 그것은 수업을 위해 예약되어 있습니다. – Carcigenicate
'TypeError : * : 'property'와 'float'에 대해 지원되지 않는 피연산자 유형 – mikey