day15

4345 단어
1. 클래스 방법과 정적 방법 클래스 중의 방법: 대상 방법, 클래스 방법과 정적 방법@1.대상 방법: a. 클래스에서 b. 자체 파라미터self c. 대상을 통해 @2.클래스 방법: a. @classmethod 뒤에 있는 함수는 클래스 방법 b. 자체 파라미터cls(cls가 함수를 호출할 때 전참하지 않아도 시스템은 자동으로 이 방법을 호출하는 클래스를 부여한다) c. 클래스를 통해 @3.정적 방법: a. @staticmethod 뒤에 있는 함수는 정적 방법 b. 자체 인자가 없습니다 c. 클래스를 통해 @4.어떤 방법을 사용하느냐(중점!):대상 방법: 함수의 기능을 실현하기 위해 대상의 속성을 사용해야 한다면 이 함수를 대상 방법의 정적 방법과 클래스 방법으로 성명한다. 함수를 실현하는 기능은 대상의 속성을 필요로 하지 않고 정적 방법이나 클래스 방법 클래스 방법을 선택할 수 있다. 대상 속성을 사용하지 않는 전제에서 클래스 정적 방법을 사용해야 한다. 대상의 속성도 필요 없고 클래스 방법도 필요 없다.
class Number: def init(self): self.value = 0 self.type = int self.id = None
@staticmethod
def max():
    return 100

@staticmethod
def min():
    return -100

num = Number() num.value = 1000 print(Number.max())
class Math: pi = 3.1415926
@classmethod
def circle_area(cls,radius):
    return cls.pi * radius ** 2

@staticmethod
def sum(num1, num2):
    return num1 + num2

print(Math.circle_area(3)) print(Math.circle_area(4))
class Rect: def init(self, length, width): self.length = length self.width = width
def area(self):
    return self.length * self.width

class Person:num = 61 # 클래스 메서드 @classmethod def destroy (cls) 선언: # cls 는 현재 클래스를 가리킵니다.이 방법의 클래스를 호출하면 할 수 있는 일,cls는 모두 print('cls:',cls,cls.num)p2 =cls()print(p2)print('인간파괴환경')
#  
@staticmethod
def func1():
    print(Person.num)
    p3 = Person()
    print(p3)
    print(' ')

2. 사유화 클래스의 내용은 기본적으로 모두 공개된다(클래스의 밖에서 사용할 수 있다)
@1. 사유화 - 클래스의 내용을 클래스의 바깥쪽에 숨기는 방법명이나 속성명 앞에 두 개의 밑줄을 넣고(두 개의 밑줄로 끝낼 수 없음) 사유한 방법과 속성은 클래스 내부에서만 사용할 수 있고 클래스 외부에서는 사용할 수 없습니다.
@2. 사유의 원리python에 진정한 사유화(접근 권한에서 내용의 접근을 제한하지 않음)가 없는 사유의 원리는 사유의 속성명이나 방법명 앞에 접두사를 붙이는 것이다'클래스 이름은 외부에서 두 개의 밑줄이 그어진 이름으로 속성과 방법을 사용하는 것을 막는다
class Person: #개인 필드num = 61 def init(self, name, age): self.name = name # 개인 객체 속성 self.age = age
def show_info(self):
    print(self.__age)
    self.__func1()

#  
def __func1(self):
    print(' ')

p1 = Person('소명', 23) print(p1.name) p1.show_info()

print(p1.__age)


print(Person.__num)


print(p1.dict) print(p1. Person age) 셋째, Getter와setter 1.대상 속성의 Getter와setter를 언제 추가해야 합니까?속성이 속성의 값을 얻기 전에 다른 일을 하면 이 속성에 Getter를 추가할 수 있습니다.만약 대상을 통과하기를 원한다면.속성이 속성에 값을 부여하기 전에 다른 일을 하면 이 속성에 setter를 추가할 수 있습니다
2. setter와 Getter Getter를 추가하는 방법: a. 속성 이름 앞에b. 속성에 대응하는 Getter@property def 속성 이름 제거(self): 함수체 -->는 속성의 값을 처리한 후 상응하는 결과를 되돌려줍니다(반드시 되돌려주는 값이 있어야 합니다)
c. 속성의 값을 사용할 때 밑줄이 있는 속성명을 사용하지 않고 밑줄이 없는 속성을 통해 사용한다
참고: 객체.밑줄이 없는 속성 -->getter에 대응하는 함수 setter를 호출합니다:setter를 추가하려면 먼저 getter a.setter @getter 이름을 추가해야 합니다.setter def 속성명 제거(self, 매개 변수): 다른 일을 하기self.속성 이름 = 처리된 값
값을 부여할 때age의 값은 0-150 사이만 가능하고 범위를 초과하면 오류가 발생합니다.age의 값을 가져올 때, 나이를 되돌려주고, 이 나이에 대응하는 단계class Person: def init (self):self를 되돌려줍니다.name self.age = 18
print(p1.age)-->(18,성년)value,jieduan = p1.age value -> 18, jieduan -> 성인
class Number: def init(self): self._value = 0 # 0-6 self. 저장week = 3 self.type = int self.id = None
# _value getter setter
@property
def value(self):
    return self._value

@value.setter
def value(self, x):
    if not -100 <= x <= 100:
        raise ValueError
    self._value = x

# _week getter
@property
def week(self):
    if self._week == 0:
        return ' '
    elif self._week == 1:
        return ' '
    elif self._week == 2:
        return ' '
    elif self._week == 3:
        return ' '
    elif self._week == 4:
        return ' '
    elif self._week == 5:
        return ' '
    elif self._week == 6:
        return ' '

isinstance(값, 클래스) -->지정한 값이 지정한 형식인지 판단(반환값은 bool)
@week.setter
def week(self, value):
    #  
    if not isinstance(value, int):
        raise ValueError
    if not 0 <= value <= 6:
        raise ValueError

    self._week = value

number = Number() number.value = 99 print(number.week)

number.week은 실질적으로number를 통해 Getter에 대응하는 week 방법을 호출하는 것이다


number.week = 1

number.week = 값의 실질은number를 통해setter에 대응하는 week 방법을 호출하는 것이다


number.value = 100 print(number.value)

좋은 웹페이지 즐겨찾기