숙제

2814 단어

1.


1. 대상은 id,host,port 세 가지 속성이 있다.도구create 정의id, 실례화 시 모든 대상에게 무작위로 id를 생성하여 id가 유일하도록 보증합니다.두 가지 실례화 방식을 제공한다. 첫째, 사용자가 host와port를 전송하는 방식, 둘째, 프로필에서 host와port를 읽고 실례화하는 방식.대상을 위한 맞춤형 방법,save 및 getobj_by_id,save는 자동으로 대상을 파일에 서열화할 수 있으며 파일 경로는 설정 파일의 DBPATH, 파일 이름은 id번호로 저장하기 전에 대상이 존재하는지 확인하고 존재하면 이상을 던집니다.get_obj_by_id 방법은 파일에서 대상을 반서열화하는 데 사용됩니다
HOST='127.0.0.1'
PORT=3306
DB_PATH=r'E:\CMS\aaa\db'
'''
from conf import settings
import uuid
import pickle
import os
class MySQL:
    def __init__(self,host,port):
        self.id=self.create_id()
        self.host=host
        self.port=port

    def save(self):
        if not self.is_exists:
            raise PermissionError(' ')
        file_path=r'%s%s%s' %(settings.DB_PATH,os.sep,self.id)
        pickle.dump(self,open(file_path,'wb'))

    @property
    def is_exists(self):
        tag=True
        files=os.listdir(settings.DB_PATH)
        for file in files:
            file_abspath=r'%s%s%s' %(settings.DB_PATH,os.sep,file)
            obj=pickle.load(open(file_abspath,'rb'))
            if self.host == obj.host and self.port == obj.port:
                tag=False
                break
        return tag
    @staticmethod
    def get_obj_by_id(id):
        file_abspath = r'%s%s%s' % (settings.DB_PATH, os.sep, id)
        return pickle.load(open(file_abspath,'rb'))

    @staticmethod
    def create_id():
        return str(uuid.uuid1())

    @classmethod
    def from_conf(cls):
        print(cls)
        return cls(settings.HOST,settings.PORT)

# print(MySQL.from_conf) #>
conn=MySQL.from_conf()
conn.save()

conn1=MySQL('127.0.0.1',3306)
conn1.save() # PermissionError:  


obj=MySQL.get_obj_by_id('7e6c5ec0-7e9f-11e7-9acc-408d5c2f84ca')
print(obj.host)

2. 하나의 종류를 정의한다. 원형은 반경, 둘레, 면적 등 속성이 있고 반경을 숨기고 둘레와 면적을 개방한다.

import math
class Circle:
    def __init__(self):     #  ○ 
        self.__bj = 2    #  

    #  property 
    @property
    def area(self):                 #  
        return math.pi * self.__bj**2

    @property
    def zc(self):
        return 2*math.pi*self.__bj

tea1 = Circle()
print(tea1.area)       #  

print(tea1.zc)  #  

3. abc 모듈을 사용하여 아이폰 추상 클래스를 정의하고 구체적인 실현 클래스를 작성한다.

import abc
class Phone(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def play(self):
        pass

    @abc.abstractmethod
    def photo_phone(self):
        pass
class hongmi(Phone):
    #  , 
    def play(self):
        pass
    def photo_phone(self):
        pass

좋은 웹페이지 즐겨찾기