Powered | | 물론 클래스에 대한 관련 정보를 가져와야 하는 경우도 있습니다.
type(obj): 해당 객체 유형을 가져옵니다.
isinstance(obj, type): 객체가 지정된 유형입니다. 예:
hasattr(obj, attr): 객체에 지정된 속성/메서드가 있는지 확인합니다.
getattr(obj, attr[, default]) 속성/메서드의 값을 가져옵니다. 해당 속성이 없으면 기본값을 반환합니다(기본값이 설정되어 있다는 전제). 그렇지 않으면 AttributeError 예외가 발생합니다.
setattr(obj, attr, value): 속성/메소드의 값을 설정합니다. to obj.attr=value;
dir(obj): 예 해당 개체의 모든 속성 및 메서드 이름 목록을 가져옵니다.
2. 메서드 액세스 제어
실제로 메서드를 속성으로 간주할 수도 있습니다. 따라서 메소드의 액세스 제어는 속성과 동일합니다. 본질적으로 비공개 메소드는 없습니다. 모든 것은 프로그래머가 의식적으로 Python 프로그래밍 표준을 준수하는 데 달려 있습니다.
예제는 다음과 같으며 구체적인 규칙은 속성과 동일합니다.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class User(object):
def upgrade(self):
pass
def _buy_equipment(self):
pass
def __pk(self):
pass
3. Method decorator
@classmethod는 객체 대신 클래스 이름을 사용하여 직접 호출됩니다.
@property는 다음과 같이 액세스할 수 있습니다. 호출 방법은 속성과 동일합니다.
구체적인 사용 예를 참조하세요:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
lv = 5
def __init__(self, name, age, account):
self.name = name
self._age = age
self.__account = account
def get_account(self):
return self.__account
@classmethod
def get_name(cls):
return cls.lv
@property
def get_age(self):
return self._age
if __name__ == '__main__':
userInfo = UserInfo('两点水', 23, 347073565);
# 打印所有属性
print(dir(userInfo))
# 打印构造函数中的属性
print(userInfo.__dict__)
# 直接使用类名类调用,而不是某个对象
print(UserInfo.lv)
# 像访问属性一样调用方法(注意看get_age是没有括号的)
print(userInfo.get_age)
작업 결과:
다음 섹션