파이썬에서 "ORM like"동작을 구현하려고합니다. 이렇게하려면 Model 클래스가 있고 모든 종류의 하위 클래스를 생성하려고합니다. 내 문제는 내 하위 클래스 인스턴스의 특성을 나열하려고 할 때입니다.파이썬에서 서브 클래스 인스턴스의 속성을 나열하십시오.
class Model:
def __init__(self):
self.className = type(self).__name__
def listAttributes(self):
from modules.users.user import User
instance = User()
meta = vars(instance)
그리고 사용자의 서브 클래스 : 여기 내 모델 클래스 I는 사용자 인스턴스에서 listAttributes 메소드를 호출 할 때
class User(models.Model):
name = models.FieldChar()
password = models.FieldChar()
age = models.FieldInteger()
, 나는 내가 무엇을 기대하지 않지만, 아마 내가 다음과 같아야합니다 : 메타 변수에는 클래스 이름 만 포함됩니다. 여기에 내가 메소드를 호출하는 방법은 다음과 같습니다
from modules.users import user
user = user.User()
user.listAttributes()
같은 행동을 나는 사용자의 listAttributes 방법()를 오버라이드 (override) 할 때 :
def listAttributes(self):
meta = vars(self)
print(meta)
내가 호출되는 객체의 속성을 나열하는 방법이 있나요 listAttributes 메서드?
조명에 감사드립니다!
class Model(object):
@classmethod
def listAttributes(cls):
return [
a for a in dir(cls) if not
callable(getattr(cls, a)) and not
a.startswith("__")
]
당신이 당신 "필드"유형 인 특성 (FieldChar, FieldInt을 ...) 가지고 싶다면 다음 당신에게 :
전적으로 찾고있는 내용입니다. 나는 파이썬에서 그 수준의 인트로피 션 레벨에 대한 희망을 잃었다. 그 철저한 대답을위한 고맙습니다. – Glandalf313