'STORY'에 해당되는 글 398건

###입력 

<stront> 글자 </strong>   강조 표시를 한다 
<h1>글자크기</h1>  <h1><h2><h3><h4> 글자의 크기를 정한다 숫자가 작을수로 크다
<a href = " 링크 주소 " target = " _blank" title="">글자</a> href 속성를 뜻한다  target 웹페이지 전환방법 title 마우스 올릴때 조그만한거 뜨는거  링크를 타고 이동할 수 있도록 한다
<li></li>   줄을 만들어준다
<ul> </ul> ㅇ 이런거 붙음 그룹화 해준다고 생각하면 된다
<ol> </ol> 1,2,3,이런거 붙음 순서가 있는 리스트
<title>사이트이름</title>   사이트의 이름을 정해줌
<meta charset ="utf-8">   사이트의 유니코드를 알림
<html> </html>   구성선언같은거
<head></head><body></body>   시작에 열거 본문 이렇게 나눈것
<!DOCTYPE html>   선언 같은거 인듯 import??
     

### <a></a>

<a target = "_balnk" href= "https://ko.wikipedia.org/wiki/" title="마우스 올리면생김"> 제목 </a>

### 라인 만들기

<ol>
  <li>하이</li>
  <li>헬로</li>
  <li>바이</li>
  <li>굿</li>
</ol>
<ul>
  <li>굿</li>
  <li>바이</li>
  <li>헬로</li>
  <li>하이</li>
</ul>

### 사이트 구성만들기

<!DOCTYPE html>
<html>
  <head>
    <title> 사이트 이름</title>
    <meta charset ="utf-8">
  </head>
  <body>
    <ol>
      <li>본문</li>
    </ol>
  </body>
</html>

### 사이트 페이지 만들기

<!DOCTYPE html>
<html>
  <head>
    <title> 사이트 이름</title>
    <meta charset ="utf-8">
  </head>
  <body>
  <h1><a href="index.html">HTML</a></li>
  
    <ol>
      <li><a href="1.html">사이트 1</a></li>
      <li><a href="2.html">사이트 2</a></li>
      <li><a href="3.html">사이트 3</a></li>
      <li><a href="4.html">사이트 4</a></li>
    </ol>
    <h2>사이트 명</h2>
    내용 적어주고
    위에 이름과 같게 설정하여 저장
    
  </body>
</html>
블로그 이미지

Or71nH

,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;

namespace Project
{
    public partial class Form1 : Form
    {
        //=============================== 전역 변수 선언
        Excel.Application ap = null;
        Excel.Workbook wb = null;
        Excel.Worksheet ws = null;


        string filepoint = "C:\\Users\\Administrator\\Documents\\Point1.xlsx";
        //=============================== 전역 변수 끝


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                ap = new Excel.Application();

                wb = ap.Workbooks.Open("C:\\Point1.xlsx");

                ws = wb.Worksheets.get_Item(1) as Excel.Worksheet;

                TB_8Bit.Text = ws.Cells[2, 3].Value.ToString();
                TB_16Bit.Text = ws.Cells[3, 3].Value.ToString();
                TB_32Bit.Text = ws.Cells[4, 3].Value.ToString();
                TB_Float.Text = ws.Cells[5, 3].Value.ToString();
                if (ws.Cells[6, 3].Value == 0)
                    TB_Digital.Text = "OFF";
                else
                    TB_Digital.Text = "ON";
                TB_String.Text = ws.Cells[7, 3].Value.ToStirng();

                ws = wb.Worksheets.get_Item(2) as Excel.Worksheet;
                TB_16Bit_2.Text = ws.Cells[2, 2].Value.ToString();
                TB_String_2.Text = ws.Cells[2, 3].Value.ToString();
                wb.Save();
                wb.Close(false);
                ap.Quit();
            }
            catch (Exception ex)
            {
                throw ex;

            }

        }

    }
}

 

이코드는 불러오는 코드이다 설정을 보고 참고 하길 바란다

 

'[ 충남인력개발원 ] (2019) > ┗C#' 카테고리의 다른 글

8일차 모스키토 사용  (0) 2020.04.16
6일차 C#과 ModBus  (0) 2020.04.13
4일차 Fuction 3 코드 해석  (0) 2020.04.09
3일차 코드 모두버스의 대하여  (0) 2020.04.08
2일차 코드??  (0) 2020.04.07
블로그 이미지

Or71nH

,

### 수위센서 실행 프로그램 PLC CICON ###

 


다운로드

project.xix
0.01MB

 

project.xid
0.84MB

 

 

project.db
0.02MB
project.egg
0.00MB


 

### 프로그램 설계도 ###

### 프로그램 해석도 ###

 

게이지 효과 프로그램이다

 

  1. 온도 센서 수집
    1. 5초 마다 온도 수집
  2. 알람설정
    1. 알람시 온도 수집 
    2.  

### 연동 프로그램 ###

 

SQLlite

SCADA

'+++++소스코드+++++ > X-SCADA' 카테고리의 다른 글

X-SCADA OPC 통신  (0) 2020.01.28
수위에 따른 물탱크 조절  (0) 2019.12.30
블로그 이미지

Or71nH

,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys.socket.h>
#include <sys/time.h> // timeval {tv.sec; tv.usec; }를 사용하기 위하여 쓴다
#include <sys/select.h> // FD_ISSET FD_CLR FD_SET FD_ZERO를 사용하기 위하여 쓴다

//모든 크기를 정해놓고 시작하자
#define BUF_SIZE 1024
#define NAME_SIZE 256



//불러올 함수이다
void * void_send_Data(void * Mysocket_input);// 전송용 
void * void_recv_Data(void * Mysocket_input);// 받기용

//전역 변수이다
char MyName[NAME_SIZE] // 이녀석 이름
char UName[NAME_SIZE]  // 보내는 여석 이름
char InputData[BUF_SIZE] // 보낼거 입력한 싸이즈 
char RecvData[BUF_SIZE] // 받을놈 싸이즈 

//메인함수이다
int main(int inputcount, char *inputdata[])
{
	int MySocket; // 나의 소켓
	struct sockaddr_in GoTo_addr; // sockaddr_in 형식의 변수이름 clnt_addr 만듬
	pthread_t snd_thread; // 전송용 쓰레드 생성
	pthread_t rcv_thread; // 받기용 쓰레드 생성
	void * snd_thread_return; // 전송용 쓰레드 리턴 
	void * rcv_thread_return; // 수신용 쓰레드 리
	
	if(inputcount!=4) {  		//접속이 잘됫는지 확인하여 실행여부 판단 
		printf("Usage : %s <IP> <port> <name>\n" , argv[0]);
		exit(1);
	}	
	
	MySocket=socket(PF_INET, SOCKSTREAM, 0); //새로 생성된 내 소켓
		
	memset(&clnt_addr, 0, sizeof(clnt_addr)); // clnt_addr의 방마다 크기에 맞게 초기화
	GoTo_addr.sin_family=AF_INET; // 주소 형식을 인터넷으로 설정함
	GoTo_addr.sin_addr.s_addr=inet_addr(inputdata[1]); // Server IP를 작성하여 보낼곳을 정한다
	GoTo_addr.sin_port=htons(atoi(inputdata[2]));// Server Port를 작성하여 보낼곳을 정한다
	
	if(connect(MySocket, (struct sockaddr*)&GoTo_addr, sizeof(GoTo_addr))==-1) //소켓이 잘만들어 졌나 확인 (inputdata[]배열의 하나가 더 생기고 거기에 소켓이 들어감)
		error_handling("connect() error");


/////////////닉네임 전송 /////////////
	sprintf(MyName, "%s",inputdata[3]); // 받은 이름을 저장함
	write(MySocket, MyName, Name_SIZE); // write는 Null이 안나오면 읽었던 곳까지 읽고 킵해놓는다write(생성된 소켓 정보, 닉네임 데이터, 사이즈를 정해줌 )
////////////전송 끝//////////////////


	print("\n\nCONNECTING...\n[Help] If you want \"Help\" -> /Help\n") //헬프 메뉴얼 설명을 만든다

	pthread_create(&snd_thread, NULL, void_send_Data, (void*)&MySocket); // 전송용 쓰레드를 함수 void_send_Data 에 MySocket의 정보를 넣어 생성한다(실행도한다)
	pthread_create(&rcv_thread, NULL, void_recv_Data, (void*)&MySocket); // 수신용 쓰레드를 함수 void_send_Data 에 MySocket의 정보를 넣어 생성한다(실행도한다)
	
	pthread_join(snd_thread, &snd_thread_return); // 전송 쓰레드가 종료되는것을 기다린다
	pthread_join(rcv_thread, &rcv_thread_return); // 수신 쓰레드가 종료되는것을 기다린다
	
	close(MySocket); // 소켓을 닫는다
	return 0; //실행되면 0값 돌려
}

// send_Data 함수이다 
void * void_send_Data(void * Mysocket_input) // 전송용 쓰줌레드 함
{
	// 필요한 변수들
	int * MySocket = (int*)Mysocket_input; // 쏘켓의 주소를 int형으로 다시 받아온다

	// 필요한 FD들
	int restart; // Select에 사용할 정수 0이면 반복
	fd_set FDinput, NextFDinput;      // 전송받은 파일의 번호수 나 이름을 기역하기 위해서
	struct timeval TimeSleepValue; // 타임슬립 구조체를 가져와 사용하기위해
	char RealSend[NAME_SIZE + BUF_SIZE + 2]; //특정 명령어를 확인하기 위하여 


	while (1) // 계속 실행하기위해서 
	{		
		/////////////// 1초동안 입력없을시 계속 실행  ///////////////
		FD_ZERO(&FDinput); // FD의 값을 0으로 초기화 한다 
		FD_SET(STDIN_FILENO, &FDinput); //SYDIN_FILENO 파일번호를 받아 FDinput에 적어넣는다
		while (1) {
			
			memset(InputData, 0, sizeof(InputData)); //InputData 0으로 초기화
			
			TimeSleepValue.tv_sec = 1;  		//타임 1초 설정
			TimeSleepValue.tv_usec = 0;		//타임 유니세크(초보다작은거) 0 설정
			
			NextFDinput = FDinput			// 다음 FD를STDIN_FILENO 상태로 만들어줌
			restart = select(STDIN_FILENO + 1, &NextFDinput, NULL, NULL, &TimeSleepValue);  // select(파일의 순번을 받는다, 파일의 번호를 받는다?? , 읽기쓰기타입,   , 슬립할 타임설정); 
			//FD를 
					/////////////// 1초동안 입력없을시 계속 실행 .////////
			if (FD_ISSET(STDIN_FILENO, &NextFDinput)) // FD_ISSET(여기는 입력[이거 사용하는사람의 입력]이 있으면 숫자로 반환된다 , 여기는 입력이 없으면 제한시간을 넘으면 FALSE로 반환한다 즉 2조건을 다 확인하는 방식으로 진행이된다
			{
				fgets(InputData, BUF_SIZE, stdin)			//stdin 전송받은 값이 여기있다 아마 컴퓨터 내장에 있는거 같다 그것을 BUF_SIZE 만한 크기에 맞게 짤라서 ecvData에 넣어준다 다 받지 못하면 아마 반복되는거같다
				if (!strncmp(InputData, "quit\n", 5))		//문자를 비교한 다 비교한 것에 quit\n 이 있을 경우 전송을 중단한다 quit\n 가5글자여서 5만 비교한거 같음
				{
					*Mysocket = -1;						//소켓을 삭제하고 메인으로 돌아간다
					return NULL;						//끝났기때문에 반복하지않는다
				}
				else if (InputData[0] != '[')			//(RecvData[0]) 여기가 이제부터 비교문장이다  RecvData[0] 이기때문에 하나만 비교하는 구문이 되어있다 이거 else 로 나중에 수정하고 다 ALLmsg로 바꾸는 식으로 해야겟다
				{
					strcat(RealSend, "[ALLMSG]");						//명렁어 str 에 ALLMSG를 첫번쩨이 추가한다
					strcat(RealSend, InputData);						//입력한 데이터를 진짜 보넬 문자에 합쳐준다 
				}
				else {
					strcpy(RealSend, InputData);				// 입력란에 [ 이있으면 명령어가 있는 것이니 그대로 출력한다 
				}
				
				if (write(*Mysocket, RealSend, strlen(RealSend)) <= 0)	//write 값이 에러이면 
				{
					*Mysocket = -1;                 // 소켓 없에기 
					return NULL;
				}				
			}
			
			if (restart == 0)          // 재시작이 문제가 있으면 
			{
				if (*Mysocket == -1)   //소켓이 에러 가 있으면 
				{
					return NULL;       // 널값 반환
				}
			}
		}
	}
}


void * void_recv_Data(void * Mysocket_input)
{
	int * Mysocket = (int *)Mysocket_input; //입력한 소켓 정보 가져오기
	char * pTocken;							//잠시 나눈거 맏을예
	char * split_Data[];							//받은 메세지

	char get_Data[NAME_SIZE + BUF_SIZE + 1];
	int get_Data_length
	while (1) 
	{
		memset(get_Data, 0x0, sizeof(get_Data));
		get_Data_length = read(*Mysocket, get_Data, NAME_SIZE + BUF_SIZE);

		if (get_Data_length <= 0)
		{
			*Mysocket = -1;
			return NULL;
		}
		get_Data[get_Data_length] = 0;
		fputs(get_Data, stdout);

		pToken = strtock(name_msg, "[@]");
		i = 0;
		while (pTocken != NULL)
		{
			pArray[i] = pToken;
			if (i++ >= MAX_SPLIT)
				break;
			pTocken = strtok(NULL, "[@]");
		}

		for (int i = 0 ; i < split_Data.length())

	}
}

void error_handling(char * msg)
{
	fputs(msg, stderr);
	fputc('\n', stderr);
	exit(1);
}

























iot_server.c
0.01MB
iot_client.c
0.00MB
file_server.c
0.00MB
file_client.c
0.00MB

 

 

Clnt.c
0.01MB
Server.c
0.00MB

 

 

Clnt완성중.c
0.01MB

'[ 충남인력개발원 ] (2019) > ┗TCP&IP' 카테고리의 다른 글

통신 TCP 코드 자료  (0) 2020.04.07
Ubutu 설명페이지 한글 MAN_PAGE KO  (0) 2020.01.15
파일 비교하기 프로그램  (0) 2020.01.14
Fgets Select(FD) 에 관하여  (0) 2020.01.13
Uduntu window 통신  (0) 2020.01.13
블로그 이미지

Or71nH

,

###객체지향

class 이름:

   self.__이름 = 넣을값

__ 이것설정이란

__이 붙으면 접근제한 기능을 부과한다

프라이빗 필드를 생성한다고 부른다

    @이름.getter   멤버를 읽어오는 메서드
    @이름.setter   멤버를 변경하는 메서드
    @classmethod    
    @property    

### def

def create(name, age):
	return {"name" : name, "age" : age}
    


def to_str(person):
	return "{0}\t{1}".format(person["name"],person["age"])
    
    
members= [
	create("홍길동", 20 ),
    create("이순신", 45),
    create("강감찬", 35)
]
   
for member in members:
	print(to_str(member))
 

### class

class Person:
	pass
    
    
member = Person()

if isinstance(member, Person):

	print("member는 Person 클래스의 인스턴스입니다.")
    
    

### class

class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
member = Person("홍길동", 20)

print("{0}\t{1}".format(member.name, member.age))

print(dir(member))

### class

class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

for member in members:
	print(member.to_str())
    

###class

class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

members[0].age = -20

for member in members:
	print(member.to_str())
    

###class

class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

members[0].age = -20

for member in members:
	print(member.to_str())
    

###class

class Person:
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    def get_name(self):
    	return self.__name
        
    def get_age(self):
    	return self.__age
        
    def set_age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

members[0].set_age(-20)

for member in members:
	print(member.to_str())
    

###class

class Person:
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    @property
    def name(self):
    	return self.__name
        
    @property
    def age(self):
    	return self.__age
        
    @age.setter
    def age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

members[0].age = 22

for member in members:
	print(member.to_str())
    

## count

class Person:
	count = 0
    
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        Person.count += 1
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    @property
    def name(self):
    	return self.__name
        
    @property
    def age(self):
    	return self.__age
        
    @age.setter
    def age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age        
    
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

print("현재 Person 클래스의 인스턴스는 총 {0} 개입니다.".format(Person.count))


for member in members:
	print(member.to_str())
    

###classmethod

class Person:
	count = 0
    
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        Person.count += 1
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    @property
    def name(self):
    	return self.__name
        
    @property           // 변수선언   . 하고 붙혀쓰면됨
    def age(self):
    	return self.__age
        
    @age.setter
    def age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age     
        
    @classmethod  //부모 객체를 불러옴
    def get_info(cls):   // cls 부모겍체 이름정함
    	return "현재 Person 클래스의 인스턴스는 총 {0} 개입니다.".format(cls.count)
        
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]

print("현재 Person 클래스의 인스턴스는 총 {0} 개입니다.".format(Person.count))

print(Person .get_info())

for member in members:
	print(member.to_str())
    

### 비교 하기

class Person:
	count = 0
    
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        Person.count += 1
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    @property
    def name(self):
    	return self.__name
        
    @property           // 변수선언   . 하고 붙혀쓰면됨
    def age(self):
    	return self.__age
        
    @age.setter
    def age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age     
        
    @classmethod  //부모 객체를 불러옴
    def get_info(cls):   // cls 부모겍체 이름정함
    	return "현재 Person 클래스의 인스턴스는 총 {0} 개입니다.".format(cls.count)
        
    def __gt__(self, other):
    	return self.__age > other.__age //self의 __age필드가 other 객체의 __age 필드보다 크면 ture 반환
        
    def __ge__(self, other):
    	return self.__age >= other.__age // self의 __age 필드가 other 객체의 __age 필드보다 크거나 같으면 ture 반환
    
    def __lt__(self, other):
    	return self.__age < other.__age // self의 __age 필드가 other 객체의 __age 필드보다 작으면 true 반환

	def __le__(self,other):
    	return self.__age <= other.__age
    
    def __eq__(self, other):
    	return self.__age == other.__age
        
    def __ne__(self, other):
    	return self.__age != other.__age 
        
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]


cnt = len(members)
i = 0
while True:
	print("members[{0}] > members[{1}] => {2}".format(i, i + 1, members[i] > members[i + 1]))
    i += 1
    if i == cnt -1:
    	print("members[{0}] > members[{1}] => {2}".format(i, 0, members[i] > members[0]))
        break
        

### __str()__

class Person:
	count = 0
    
	def __init__(self, name, age):
    	self.__name = name
        self.__age = age
        Person.count += 1
        print("{0} 객체가 생성되었습니다. ".format(self.name))
        
    def __del__(self):
    	print("{0} 객체가 제거되었습니다. ".format(self.name))
        
    def to_str(self):
    	return "{0}\t{1}".format(self.name, self.age)
        
    @property
    def name(self):
    	return self.__name
        
    @property           // 변수선언   . 하고 붙혀쓰면됨
    def age(self):
    	return self.__age
        
    @age.setter
    def age(self, age):
    	if age<0:
        	raise TypeError("나이는 0이상의 값만 허용합니다.")
        self.__age = age     
        
    @classmethod  //부모 객체를 불러옴
    def get_info(cls):   // cls 부모겍체 이름정함
    	return "현재 Person 클래스의 인스턴스는 총 {0} 개입니다.".format(cls.count)
        
    def __gt__(self, other):
    	return self.__age > other.__age //self의 __age필드가 other 객체의 __age 필드보다 크면 ture 반환
        
    def __ge__(self, other):
    	return self.__age >= other.__age // self의 __age 필드가 other 객체의 __age 필드보다 크거나 같으면 ture 반환
    
    def __lt__(self, other):
    	return self.__age < other.__age // self의 __age 필드가 other 객체의 __age 필드보다 작으면 true 반환

	def __le__(self,other):
    	return self.__age <= other.__age
    
    def __eq__(self, other):
    	return self.__age == other.__age
        
    def __ne__(self, other):
    	return self.__age != other.__age 
        
    def __str__(self):
    	return "{0}\t{1}".format (self.__name ,self.__age)
        
member = [
	Person("홍길동", 20),
    Person("이순신", 45),
    Person("강감찬", 35)
]


for member in members:
	print(str(member))
    
        

### class child

class Parent:
    def __init__(self, family_name):
        self.__family_name = family_name
        print("Parent 클래스의 init() ..")
    
    @property
    def family_name(self):
        return self.__family_name
        
class Child(Parent):
    def __init__(self, first_name, last_name):
        Parent.__init__(self, last_name)
        #super().__init__(last_name)
        self.__first__name = first_name
        print("Child 클래스의 __init__() ..")
        
    @property
    def first_name(self):
        return self.__first_name
    
    @first_name.setter
    def first_name(self, first_name):
        self.__first_name = first_name
    
    @property
    def name(self):
        return "{0} {1}".format(self.family_name, self.first_name)
        
child = Child("길동", "홍")
print(child.family_name)
print(child.first_name)
print(child.name)

### 오머라이딩

# -*- coding: utf-8 -*-

class Person:
    def __init__(self, family_name):
        self.__family_name = family_name
        print("Parent 클래스의 __init__() ..")
    
    @property
    def family_name(self):
    	return self.__family_name
        
class Child(Parent):
    def __init__(self, first_name, last_name):
        Parent.__init__(self, last_name)
        # super().__init__(last_name)
        self.__first_name = first_name
        print("Child 클래스의 __init__()... ")
        
    @property
    def first_name(self):
    	return self.__first_name
        
    @first_name.setter
    def first_name(self, first_name):
    	self.__first_name = first_name
        
    @property
    def name(self):
    	return "{0} {1}".format(self.family_name, self.first_name)
    
    def print_info(self):
        Parent.print_info(self)
        # super().print_info()
        print("Child: {0}".format(self.name))
        
child = Child("길동", "홍")

child.print_info()

###연습

# -*- coding: utf-8 -*-

# 15-15.py

class Student:
	def __init__(self, name, gender, height):
    	self.__name = name
        self.__gender = gender
        self.__height = height
        
    @property
    def name(self):
    	return self.__name
        
    @property
    def gender(self):
    	return self.__gender
        
    @property
    def height(self):
    	return self.__height
    @height.setter
    def height(self, height):
    	self.__height = height
        
    def __repr__(self):
    	retrun "{0}(name: {1}, gender: {2}, height: {3})"\
        	.format(self.__class__.__name__, self.name, self.gender, self.height)
            
students = [
	student("홍길동", "남", 176.5),
    student("이순신", "남", 188.5),
    student("유관순", "여", 158.4),
    student("강감찬", "남", 182.2)
]
for student in students:
	print(student)
    
print ("name으로 오름차순 정렬후====>")
for student in sorted(students, key=lambda x: x.name):
	print(student)
print("name으로 내림차순 정렬 후 ===>")
for student in sorted(students, key=lambda x: x.name, reverse= True):
	print(student)
    

'+++++SW 일일 공부+++++ > SW Expert Aademy' 카테고리의 다른 글

트리구조의 모든 집합 구하기 시프트 활용  (0) 2020.04.09
stack  (0) 2020.03.26
파이썬 문자열에 대하여  (0) 2020.02.07
Python Dict()  (0) 2020.02.02
파이썬 set(), 집합  (0) 2020.02.02
블로그 이미지

Or71nH

,