간단한 클래스를 생성하는 예제 튜토리얼

零下一度
풀어 주다: 2017-06-25 09:55:23
원래의
2212명이 탐색했습니다.

간단한 클래스 만들기

Dog 클래스에서 생성된 각 인스턴스 열에는 이름과 나이가 저장됩니다. 우리는 각 강아지에게 쪼그려 앉기(sit()) 및 구르기(roll_over()) 기능을 부여했습니다.

 1 class Dog(): 2     """一次模拟小狗的简单尝试""" 3     def __init__(self, name, age): 4         """初始化属性name和age""" 5         self.name = name 6         self.age = age 7     def sit(self): 8         """模拟小狗被命令时蹲下""" 9         print(self.name.title() + "now is sitting.")10     def roll_over(self):11         """模拟小狗被命令时打滚"""12         print(self.name.title() + "rolled over!")13 my_dog = Dog('tom','3')14 print("my dog name is " + my_dog.name.title() )
로그인 후 복사
관례적으로 Python에서 대문자가 있는 이름은 클래스를 나타냅니다. 클래스에서는 함수를 메소드라고 합니다
메서드 __init__(), 시작과 끝에 2개의 밑줄이 있습니다. 이는 Python 기본 메서드와 일반 메서드 사이의 이름 충돌을 피하기 위해 고안된 규칙입니다. 3개의 형식 매개변수 self, nameage를 포함하도록 __init__() 메소드를 정의합니다. 이 메소드의 정의에서 매개변수 self는 필수이며 다른 형식 매개변수 앞에 위치해야 합니다. 메소드 정의에 형식 매개변수 self를 포함해야 하는 이유는 무엇입니까? PythonDog 인스턴스를 생성하기 위해 이 __init__() 메서드를 호출하면 실제 매개변수 self가 자동으로 전달되기 때문입니다. self_name 및 self_age 변수에는 self라는 접두사가 붙습니다. self라는 접두사가 붙은 변수는 클래스의 모든 메서드에서 사용할 수 있습니다. 클래스의 모든 인스턴스 열을 통해 이러한 변수에 액세스할 수도 있습니다. 인스턴스를 통해 액세스할 수 있는 이와 같은 변수를 속성이라고 합니다.
In Python2.

속성 액세스

위의 예에 이어 __init__() 메서드는 특정 강아지를 나타내는 예를 생성하고 우리가 제공하는 값을 사용하여 이름과 나이 속성을 설정합니다. __init__() 메서드는 명시적이지 않습니다. return 문이 포함되어 있지만 Python은 자동으로 이 강아지를 나타내는 예제를 반환합니다. 이 예제를 my_dog 변수에 저장합니다.
class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)print(my_dog.name)print(my_dog.age)#运行结果tom3
로그인 후 복사

메서드 호출

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
my_dog.sit()
my_dog.roll_over()#运行结果Tom now is sitting.
Tom rolled over!
로그인 후 복사

Dog 클래스를 기반으로 인스턴스를 생성한 후 마침표 표기법을 사용하여 Dog가 정의한 모든 메서드를 호출할 수 있습니다

여러 인스턴스 생성

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
your_dog = Dog('Mei',2)print("My dog name is " + my_dog.name.title())print("Your dog name is " + your_dog.name.title())#运行结果My dog name is Tom
Your dog name is Mei
로그인 후 복사

필요에 따라 클래스를 기반으로 인스턴스를 원하는 만큼 만들 수 있습니다.

클래스 및 인스턴스 사용

속성에 대한 기본값 지정

클래스의 모든 속성에는 값이 0이거나 빈 문자열인 경우에도 초기 값이 있어야 합니다. 기본값 __init__() 메서드에서 이 초기 값을 지정하는 것은 괜찮습니다. 속성에 대해 이 작업을 수행하는 경우 해당 속성에 대한 초기화를 제공하는 형식 매개변수를 포함할 필요가 없습니다.
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.model)print(my_car.get_descri_name())#运行结果a42017 a4 audi
로그인 후 복사

속성 값을 직접 수정

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.get_descri_name())
my_car.year = 2016print(my_car.get_descri_name())#运行结果2017 a4 audi2016 a4 audi
로그인 후 복사

메소드로 수정

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4', '2017')
my_car.read_odometer()
my_car.odometer_reading = 10    #直接修改里程值my_car.update(200)     #通过方法修改里程my_car.read_odometer()
my_car.increment_odometer(10)
my_car.read_odometer()#运行结果This car has 100 miles on it.
This car has 200 miles on it.
This car has 210 miles on it.
로그인 후 복사

상속

다른 클래스를 상속하려면 속성을 다음에서 찾을 수 있습니다. 클래스 괄호 안에 클래스 이름을 추가합니다. 예:

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())#运行结果2016 model s tesla
로그인 후 복사

상위 클래스의 속성을 상속하려면 또한 Python이 상위 클래스를 하위 클래스와 연결하는 데 도움이 되는 특수 함수 super()를 추가해야 합니다. .

python2에서는 마지막으로 하위 클래스와 상위 클래스를 구별하는 새로운 속성과 새로운 메서드를 추가할 수 있습니다.
인스턴스를 속성으로 사용
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()#运行结果2016 model s tesla
This car has a 70-kwh battery.
로그인 후 복사
클래스 가져오기

단일 또는 여러 클래스 가져오기

파일 car.py

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()
로그인 후 복사
다른 파일 my_car를 만듭니다. py, 클래스 가져오기
from  car import Car
my_car = Car('audi', 'a4', '2017')
로그인 후 복사
모듈은 여러 클래스를 저장할 수 있으므로 한 번에 여러 클래스를 가져올 수 있습니다.

from car import Car,Battery,ElectricCar
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()
로그인 후 복사
전체 모듈 가져오기

import car     #导入整个模块的时候,需要使用句点表示法访问需要的类
my_tesla = car.ElectricCar('tesla', 'model s', '2016')print(my_tesla.battery)
로그인 후 복사

모든 클래스 가져오기

from car import *    #导入所有的类
로그인 후 복사

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 
 
 
 
 
 
 
 
 
 
 
 

위 내용은 간단한 클래스를 생성하는 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿