210412 TIL

18893 ๋‹จ์–ด TILTIL

TIL

์šด์˜์ฒด์ œ ๊ณต๋ถ€


ํŒŒ์ด์ฌ ์‹ฌํ™”

class Student():
   """
   Student Class
   Author: sdk
   Date: 2021.04.12 
   """

   # ํด๋ž˜์Šค ๋ณ€์ˆ˜ 
   student_count = 0 

   def __init__(self, name, number, grade, details, email=None):
       # ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ 
       self._name = name
       self._number = number
       self._grade = grade
       self._details = details
       self._email = email
       # ํด๋ž˜์Šค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ธฐ 
       Student.student_count += 1 

   def __str__(self):
       return 'str {}'.format(self._name)

   def __repr__(self):
       return 'repr {}'.format(self._name)

   def detail_info(self):
       print('Current Id : {}'.format(id(self)))
       print('student Detail Info : {} {} {}'.format(self._name, self._email, self._details))        

   def __del__(self):
       Student.student_count -= 1 

# self์˜ ์˜๋ฏธ
studt1 = Student('cho', 2 ,3, {'gender': 'Male', 'score1': 65, 'score2': 44})
studt2 = Student('chang', 4 ,1, {'gender': 'Female', 'score1': 85, 'score2': 74}, 'stu2@naver.com')

# ์•„์ด๋”” ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค. 
print(id(studt1))  # 140202496724944
print(id(studt2))  # 140202496724848

# is ๋Š” ์•„์ด๋”” ๊ฐ’์„ ๋น„๊ต, == ๋Š” ๊ฐ’์„ ๋น„๊ต 
print(studt1._name == studt2._name) # False
print(studt1 is studt2) # False

# dir & __dict__ ํ™•์ธ
print(dir(studt1))  #['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_details', '_email', '_grade', '_name', '_number', 'detail_info', 'student_count']
print(dir(studt2)) 
print(studt1.__dict__) 
# {'_name': 'cho', '_number': 2, '_grade': 3, '_details': {'gender': 'Male', 'score1': 65, 'score2': 44}, '_email': None}
print(studt2.__dict__)

# Doctring - ์ฃผ์„์„ ์ถœ๋ ฅ 
print(Student.__doc__)
#   Student Class
#    Author: sdk
#    Date: 2021.04.12
print()

# ์‹คํ–‰ 
studt1.detail_info()
# Current Id : 140202496724944
# student Detail Info : cho None {'gender': 'Male', 'score1': 65, 'score2': 44}
studt2.detail_info()

# ์—๋Ÿฌ 
Student.detail_info()

  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค๋ณ€์ˆ˜์˜ ์ฐจ์ด ์ดํ•ด

  • dir() ํ•จ์ˆ˜์™€ __dict__์ฐจ์ด ์ดํ•ด

  • Student.detail_info() ๊ฐ€ ์™œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”์ง€ ์ดํ•ด(์ธ์ž๊ฐ€ ์—†๊ธฐ์—)

    ์‡ผํ•‘๋ชฐ ๋งŒ๋“ค๊ธฐ

  • ์œ ์ €, ์ƒํ’ˆ, ์ฃผ๋ฌธ 3๊ฐœ์˜ app์„ ์ƒ์„ฑํ–ˆ๋‹ค.

  • ๊ฐ๊ฐ model์„ ๊ตฌ์„ฑํ–ˆ๋‹ค.

# ์œ ์ € ๋ชจ๋ธ 
class Fcuser(models.Model):
    email = models.EmailField(verbose_name='์ด๋ฉ”์ผ')
    password = models.CharField(max_length=64, verbose_name='๋น„๋ฐ€๋ฒˆํ˜ธ')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='์ƒ์„ฑ๋‚ ์งœ')

    def __str__(self):
        return self.email

    class Meta:
        db_table = 'products_user'
        verbose_name = '์‚ฌ์šฉ์ž'
        verbose_name_plural = '์‚ฌ์šฉ์ž'

# ์ƒํ’ˆ ๋ชจ๋ธ 
class Product(models.Model):
    name = models.CharField(max_length=256, verbose_name='์ƒํ’ˆ๋ช…')
    price = models.IntegerField(verbose_name='์ƒํ’ˆ๊ฐ€๊ฒฉ')
    description = models.TextField(verbose_name='์ƒํ’ˆ์„ค๋ช…')
    stuck = models.IntegerField(verbose_name='์žฌ๊ณ ')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='๋“ฑ๋ก๋‚ ์งœ')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'products_product'
        verbose_name = '์ƒํ’ˆ'
        verbose_name_plural = '์ƒํ’ˆ'
        
# ์ฃผ๋ฌธ ๋ชจ๋ธ 

class Order(models.Model):
    fcuser = models.ForeignKey('fcuser.Fcuser', on_delete=models.CASCADE, verbose_name='์‚ฌ์šฉ์ž')
    product = models.ForeignKey('product.Product', on_delete=models.CASCADE, verbose_name='์ƒํ’ˆ')
    quantity = models.IntegerField(verbose_name='์ˆ˜๋Ÿ‰')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='๋“ฑ๋ก๋‚ ์งœ')

    def __str__(self):
        return str(self.fcuser) + ' ' + str(self.product)

    class Meta:
        db_table = 'products_order'
        verbose_name = '์ฃผ๋ฌธ'
        verbose_name_plural = '์ฃผ๋ฌธ'

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ