Pythonã®ããããã£ãã£ã¹ã¯ãªãã¿ãç¿åŸããèšç®ãããããããã£ã屿§ã®æ€èšŒãé«åºŠãªãªããžã§ã¯ãæåèšèšããã¹ã¿ãŒããŸããããå®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹ã§åŠã³ãŸãã
Pythonã®ããããã£ãã£ã¹ã¯ãªãã¿ïŒèšç®ãããããããã£ãšããªããŒã·ã§ã³ããžãã¯
Pythonã®ããããã£ãã£ã¹ã¯ãªãã¿ã¯ãã¯ã©ã¹å ã®å±æ§ã¢ã¯ã»ã¹ãšåäœã管çããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãããããã䜿çšãããšã屿§ã®ååŸãèšå®ãåé€ã®ããã®ã«ã¹ã¿ã ããžãã¯ãå®çŸ©ã§ããèšç®ãããããããã£ã®äœæãããªããŒã·ã§ã³ã«ãŒã«ã®é©çšãé«åºŠãªãªããžã§ã¯ãæåèšèšãã¿ãŒã³ã®å®è£ ãå¯èœã«ãªããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãããããã£ãã£ã¹ã¯ãªãã¿ã®ããããåŽé¢ãæ¢æ±ãããã®Pythonã®éèŠãªæ©èœãç¿åŸããã®ã«åœ¹ç«ã€å®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹ãæäŸããŸãã
ããããã£ãã£ã¹ã¯ãªãã¿ãšã¯ïŒ
Pythonã«ãããŠããã£ã¹ã¯ãªãã¿ãšã¯ãããã€ã³ãã£ã³ã°åäœããæã€ãªããžã§ã¯ã屿§ã§ããããã®å±æ§ã¢ã¯ã»ã¹ããã£ã¹ã¯ãªãã¿ãããã³ã«ã®ã¡ãœããã«ãã£ãŠãªãŒããŒã©ã€ããããŠããããšãæå³ããŸãããããã®ã¡ãœããã¯__get__()
ã__set__()
ãããã³__delete__()
ã§ãããããã®ã¡ãœããã®ããããã屿§ã«å¯ŸããŠå®çŸ©ãããŠããå Žåããã®å±æ§ã¯ãã£ã¹ã¯ãªãã¿ã«ãªããŸããç¹ã«ããããã£ãã£ã¹ã¯ãªãã¿ã¯ãã«ã¹ã¿ã ããžãã¯ã䜿çšããŠå±æ§ã¢ã¯ã»ã¹ã管çããããã«èšèšãããç¹å®ã®ã¿ã€ãã®ãã£ã¹ã¯ãªãã¿ã§ãã
ãã£ã¹ã¯ãªãã¿ã¯ãããããã£ãã¡ãœãããã¹ã¿ãã£ãã¯ã¡ãœãããã¯ã©ã¹ã¡ãœãããããã«ã¯super()
ãªã©ãå€ãã®Pythonã®çµã¿èŸŒã¿æ©èœã®è£åŽã§äœ¿çšãããäœã¬ãã«ã®ã¡ã«ããºã ã§ãããã£ã¹ã¯ãªãã¿ãçè§£ããããšã§ãããæŽç·ŽãããPythonicãªã³ãŒããæžãããšãã§ããããã«ãªããŸãã
ãã£ã¹ã¯ãªãã¿ãããã³ã«
ãã£ã¹ã¯ãªãã¿ãããã³ã«ã¯ã屿§ã¢ã¯ã»ã¹ãå¶åŸ¡ããã¡ãœãããå®çŸ©ããŸãïŒ
__get__(self, instance, owner)
: ãã£ã¹ã¯ãªãã¿ã®å€ãååŸããããšãã«åŒã³åºãããŸããinstance
ã¯ãã£ã¹ã¯ãªãã¿ãå«ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããowner
ã¯ã¯ã©ã¹èªäœã§ãããã£ã¹ã¯ãªãã¿ãã¯ã©ã¹ããã¢ã¯ã»ã¹ãããå ŽåïŒäŸ:MyClass.my_descriptor
ïŒãinstance
ã¯None
ã«ãªããŸãã__set__(self, instance, value)
: ãã£ã¹ã¯ãªãã¿ã®å€ãèšå®ããããšãã«åŒã³åºãããŸããinstance
ã¯ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããvalue
ã¯ä»£å ¥ãããå€ã§ãã__delete__(self, instance)
: ãã£ã¹ã¯ãªãã¿ã®å±æ§ãåé€ããããšãã«åŒã³åºãããŸããinstance
ã¯ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
ããããã£ãã£ã¹ã¯ãªãã¿ãäœæããã«ã¯ããããã®ã¡ãœããã®å°ãªããšã1ã€ãå®è£ ããã¯ã©ã¹ãå®çŸ©ããå¿ èŠããããŸããç°¡åãªäŸããå§ããŸãããã
åºæ¬çãªããããã£ãã£ã¹ã¯ãªãã¿ã®äœæ
屿§ã倧æåã«å€æããããããã£ãã£ã¹ã¯ãªãã¿ã®åºæ¬çãªäŸã次ã«ç€ºããŸãïŒ
class UppercaseDescriptor:
def __get__(self, instance, owner):
if instance is None:
return self # Return the descriptor itself when accessed from the class
return instance._my_attribute.upper() # Access a "private" attribute
def __set__(self, instance, value):
instance._my_attribute = value
class MyClass:
my_attribute = UppercaseDescriptor()
def __init__(self, value):
self._my_attribute = value # Initialize the "private" attribute
# Example usage
obj = MyClass("hello")
print(obj.my_attribute) # Output: HELLO
obj.my_attribute = "world"
print(obj.my_attribute) # Output: WORLD
ãã®äŸã§ã¯ïŒ
UppercaseDescriptor
ã¯ã__get__()
ãš__set__()
ãå®è£ ãããã£ã¹ã¯ãªãã¿ã¯ã©ã¹ã§ããMyClass
ã¯ãUppercaseDescriptor
ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã屿§my_attribute
ãå®çŸ©ããŠããŸããobj.my_attribute
ã«ã¢ã¯ã»ã¹ãããšãUppercaseDescriptor
ã®__get__()
ã¡ãœãããåŒã³åºãããåºã«ãªã_my_attribute
ã倧æåã«å€æããŸããobj.my_attribute
ãèšå®ãããšã__set__()
ã¡ãœãããåŒã³åºãããåºã«ãªã_my_attribute
ãæŽæ°ããŸãã
ããã©ã€ããŒãã屿§ïŒ_my_attribute
ïŒã®äœ¿çšã«æ³šç®ããŠãã ãããããã¯ã屿§ãã¯ã©ã¹å
ã§ã®å
éšäœ¿çšãæå³ããŠãããå€éšããçŽæ¥ã¢ã¯ã»ã¹ãã¹ãã§ã¯ãªãããšã瀺ãPythonã®äžè¬çãªæ
£ç¿ã§ãããã£ã¹ã¯ãªãã¿ã¯ããããã®ããã©ã€ããŒãã屿§ãžã®ã¢ã¯ã»ã¹ã仲ä»ããã¡ã«ããºã ãæäŸããŸãã
èšç®ãããããããã£
ããããã£ãã£ã¹ã¯ãªãã¿ã¯ãèšç®ãããããããã£ãã€ãŸãä»ã®å±æ§ã«åºã¥ããŠåçã«å€ãèšç®ããã屿§ãäœæããã®ã«åªããŠããŸããããã«ãããããŒã¿ãäžè²«ãããã³ãŒãã®ä¿å®æ§ãé«ããããšãã§ããŸããé貚æç®ã«é¢ããäŸãèããŠã¿ãŸãããïŒãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ããã«ä»®èª¬ã®æç®ã¬ãŒãã䜿çšããŸãïŒïŒ
class CurrencyConverter:
def __init__(self, usd_to_eur_rate, usd_to_gbp_rate):
self.usd_to_eur_rate = usd_to_eur_rate
self.usd_to_gbp_rate = usd_to_gbp_rate
class Money:
def __init__(self, usd, converter):
self.usd = usd
self.converter = converter
class EURDescriptor:
def __get__(self, instance, owner):
if instance is None:
return self
return instance.usd * instance.converter.usd_to_eur_rate
def __set__(self, instance, value):
raise AttributeError("EURãçŽæ¥èšå®ã§ããŸããã代ããã«USDãèšå®ããŠãã ããã")
class GBPDescriptor:
def __get__(self, instance, owner):
if instance is None:
return self
return instance.usd * instance.converter.usd_to_gbp_rate
def __set__(self, instance, value):
raise AttributeError("GBPãçŽæ¥èšå®ã§ããŸããã代ããã«USDãèšå®ããŠãã ããã")
eur = EURDescriptor()
gbp = GBPDescriptor()
# Example usage
converter = CurrencyConverter(0.85, 0.75) # USD to EUR and USD to GBP rates
money = Money(100, converter)
print(f"USD: {money.usd}")
print(f"EUR: {money.eur}")
print(f"GBP: {money.gbp}")
# Attempting to set EUR or GBP will raise an AttributeError
# money.eur = 90 # This will raise an error
ãã®äŸã§ã¯ïŒ
CurrencyConverter
ã¯æç®ã¬ãŒããä¿æããŸããMoney
ã¯USDã§ã®éé¡ã衚ããCurrencyConverter
ã€ã³ã¹ã¿ã³ã¹ãžã®åç §ãæã¡ãŸããEURDescriptor
ãšGBPDescriptor
ã¯ãUSDå€ãšæç®ã¬ãŒãã«åºã¥ããŠEURããã³GBPå€ãèšç®ãããã£ã¹ã¯ãªãã¿ã§ããeur
ããã³gbp
屿§ã¯ããããã®ãã£ã¹ã¯ãªãã¿ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã__set__()
ã¡ãœããã¯ãèšç®ãããEURããã³GBPå€ã®çŽæ¥çãªå€æŽãé²ãããã«AttributeError
ãçºçãããŸããããã«ããã倿Žã¯USDå€ãä»ããŠè¡ãããäžè²«æ§ãä¿ãããŸãã
屿§ã®ããªããŒã·ã§ã³
ããããã£ãã£ã¹ã¯ãªãã¿ã¯ã屿§å€ã«ããªããŒã·ã§ã³ã«ãŒã«ãé©çšããããã«ã䜿çšã§ããŸããããã¯ãããŒã¿ã®äžè²«æ§ã確ä¿ãããšã©ãŒãé²ãããã«äžå¯æ¬ ã§ããã¡ãŒã«ã¢ãã¬ã¹ãæ€èšŒãããã£ã¹ã¯ãªãã¿ãäœæããŸãããããã®äŸã§ã¯ããªããŒã·ã§ã³ãç°¡çŽ åããŸãã
import re
class EmailDescriptor:
def __init__(self, attribute_name):
self.attribute_name = attribute_name
def __get__(self, instance, owner):
if instance is None:
return self
return instance.__dict__[self.attribute_name]
def __set__(self, instance, value):
if not self.is_valid_email(value):
raise ValueError(f"ç¡å¹ãªã¡ãŒã«ã¢ãã¬ã¹: {value}")
instance.__dict__[self.attribute_name] = value
def __delete__(self, instance):
del instance.__dict__[self.attribute_name]
def is_valid_email(self, email):
# Simple email validation (can be improved)
pattern = r"^[\w\.-]+@([\w-]+\.)+[\w-]{2,4}$"
return re.match(pattern, email) is not None
class User:
email = EmailDescriptor("email")
def __init__(self, email):
self.email = email
# Example usage
user = User("test@example.com")
print(user.email)
# Attempting to set an invalid email will raise a ValueError
# user.email = "invalid-email" # This will raise an error
try:
user.email = "invalid-email"
except ValueError as e:
print(e)
ãã®äŸã§ã¯ïŒ
EmailDescriptor
ã¯ãæ£èŠè¡šçŸïŒis_valid_email
ïŒã䜿çšããŠã¡ãŒã«ã¢ãã¬ã¹ãæ€èšŒããŸãã__set__()
ã¡ãœããã¯ãå€ãå²ãåœãŠãåã«ããã®å€ãæå¹ãªã¡ãŒã«ã¢ãã¬ã¹ã§ãããããã§ãã¯ããŸããæå¹ã§ãªãå ŽåãValueError
ãçºçãããŸããUser
ã¯ã©ã¹ã¯ãEmailDescriptor
ã䜿çšããŠemail
屿§ã管çããŸãã- ãã£ã¹ã¯ãªãã¿ã¯å€ãã€ã³ã¹ã¿ã³ã¹ã®
__dict__
ã«çŽæ¥æ ŒçŽãããããå床ãã£ã¹ã¯ãªãã¿ãããªã¬ãŒããããšãªãã¢ã¯ã»ã¹ã§ããŸãïŒç¡éååž°ãé²ããŸãïŒã
ããã«ãããæå¹ãªã¡ãŒã«ã¢ãã¬ã¹ã®ã¿ãemail
屿§ã«å²ãåœãŠãããããšãä¿èšŒãããããŒã¿ã®äžè²«æ§ãåäžããŸããis_valid_email
颿°ã¯åºæ¬çãªããªããŒã·ã§ã³ã®ã¿ãæäŸããŠãããããå
ç¢ãªãã§ãã¯ã®ããã«æ¹åã§ããããšã«æ³šæããŠãã ãããå¿
èŠã«å¿ããŠãåœéåãããã¡ãŒã«ã¢ãã¬ã¹ã®ããªããŒã·ã§ã³ã«ã¯å€éšã©ã€ãã©ãªã䜿çšããããšãå¯èœã§ãã
çµã¿èŸŒã¿é¢æ°`property`ã®äœ¿çš
Pythonã«ã¯ãproperty()
ãšããçµã¿èŸŒã¿é¢æ°ããããã·ã³ãã«ãªããããã£ãã£ã¹ã¯ãªãã¿ã®äœæãç°¡çŽ åããŸããããã¯æ¬è³ªçã«ããã£ã¹ã¯ãªãã¿ãããã³ã«ã®äŸ¿å©ãªã©ãããŒã§ããåºæ¬çãªèšç®ãããããããã£ã«ã¯ããã°ãã°ãã¡ãã奜ãŸããŸãã
class Rectangle:
def __init__(self, width, height):
self._width = width
self._height = height
def get_area(self):
return self._width * self._height
def set_area(self, area):
# Implement logic to calculate width/height from area
# For simplicity, we'll just set width and height to the square root
import math
side = math.sqrt(area)
self._width = side
self._height = side
def delete_area(self):
self._width = 0
self._height = 0
area = property(get_area, set_area, delete_area, "é·æ¹åœ¢ã®é¢ç©")
# Example usage
rect = Rectangle(5, 10)
print(rect.area) # Output: 50
rect.area = 100
print(rect._width) # Output: 10.0
print(rect._height) # Output: 10.0
del rect.area
print(rect._width) # Output: 0
print(rect._height) # Output: 0
ãã®äŸã§ã¯ïŒ
property()
ã¯æå€§4ã€ã®åŒæ°ãåããŸãïŒfget
ïŒã²ãã¿ãŒïŒãfset
ïŒã»ãã¿ãŒïŒãfdel
ïŒããªãŒã¿ãŒïŒãããã³doc
ïŒããã¥ã¡ã³ããŒã·ã§ã³æååïŒãarea
ã®ååŸãèšå®ãåé€ã®ããã«åå¥ã®ã¡ãœãããå®çŸ©ããŸããproperty()
ã¯ããããã®ã¡ãœããã䜿çšããŠå±æ§ã¢ã¯ã»ã¹ã管çããããããã£ãã£ã¹ã¯ãªãã¿ãäœæããŸãã
çµã¿èŸŒã¿ã®property
ã¯ãã·ã³ãã«ãªã±ãŒã¹ã§ã¯ãåå¥ã®ãã£ã¹ã¯ãªãã¿ã¯ã©ã¹ãäœæãããããããã°ãã°èªã¿ãããç°¡æœã§ããããããããè€éãªããžãã¯ã®å Žåããè€æ°ã®å±æ§ãã¯ã©ã¹éã§ãã£ã¹ã¯ãªãã¿ããžãã¯ãåå©çšããå¿
èŠãããå Žåã«ã¯ãã«ã¹ã¿ã ãã£ã¹ã¯ãªãã¿ã¯ã©ã¹ãäœæããæ¹ãåªããæ§æãšåå©çšæ§ãæäŸããŸãã
ããããã£ãã£ã¹ã¯ãªãã¿ã䜿çšãã¹ãæ
ããããã£ãã£ã¹ã¯ãªãã¿ã¯åŒ·åãªããŒã«ã§ãããæ éã«äœ¿çšããå¿ èŠããããŸãã以äžã«ãç¹ã«åœ¹ç«ã€ããã€ãã®ã·ããªãªã瀺ããŸãïŒ
- èšç®ãããããããã£: 屿§ã®å€ãä»ã®å±æ§ãå€éšèŠå ã«äŸåããåçã«èšç®ãããå¿ èŠãããå Žåã
- 屿§ã®ããªããŒã·ã§ã³: ããŒã¿ã®äžè²«æ§ãç¶æããããã«ã屿§å€ã«ç¹å®ã®ã«ãŒã«ãå¶çŽãé©çšããå¿ èŠãããå Žåã
- ããŒã¿ã«ãã»ã«å: 屿§ãžã®ã¢ã¯ã»ã¹ã倿޿¹æ³ãå¶åŸ¡ããåºã«ãªãå®è£ ã®è©³çްãé èœãããå Žåã
- èªã¿åãå°çšå±æ§: 屿§ãåæåãããåŸããã®å€æŽãé²ãããå ŽåïŒ
__get__
ã¡ãœããã®ã¿ãå®çŸ©ããããšã§ïŒã - é å»¶ããŒã: 屿§ã®å€ãæåã«ã¢ã¯ã»ã¹ããããšãã«ã®ã¿ããŒããããå ŽåïŒäŸïŒããŒã¿ããŒã¹ããã®ããŒã¿ã®ããŒãïŒã
- å€éšã·ã¹ãã ãšã®çµ±å: ãã£ã¹ã¯ãªãã¿ã¯ããªããžã§ã¯ããšããŒã¿ããŒã¹/APIãªã©ã®å€éšã·ã¹ãã ãšã®éã®æœè±¡åã¬ã€ã€ãŒãšããŠäœ¿çšã§ããã¢ããªã±ãŒã·ã§ã³ãåºã«ãªã衚çŸã«ã€ããŠå¿é ããå¿ èŠããªããªããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãåäžããŸããäŸãã°ãæ¥ä»ãæ ŒçŽããããããã£ãããããåºã«ãªãã¹ãã¬ãŒãžããã©ãããã©ãŒã ã«ãã£ãŠç°ãªãå¯èœæ§ãããå Žåããã£ã¹ã¯ãªãã¿ã䜿çšããŠãããæœè±¡åã§ããŸãã
ããããããããã£ãã£ã¹ã¯ãªãã¿ã¯ã³ãŒãã«è€éããå ããå¯èœæ§ããããããäžå¿ èŠã«äœ¿çšããããšã¯é¿ããŠãã ãããç¹å¥ãªããžãã¯ã䌎ããªãã·ã³ãã«ãªå±æ§ã¢ã¯ã»ã¹ã«ã¯ãçŽæ¥å±æ§ã¢ã¯ã»ã¹ã§ååãªå Žåãå€ãã§ãããã£ã¹ã¯ãªãã¿ã®äœ¿ãããã¯ãã³ãŒãã®çè§£ãšä¿å®ãå°é£ã«ããå¯èœæ§ããããŸãã
ãã¹ããã©ã¯ãã£ã¹
ããããã£ãã£ã¹ã¯ãªãã¿ãæ±ãéã«çæãã¹ãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã次ã«ç€ºããŸãïŒ
- ããã©ã€ããŒãã屿§ã®äœ¿çš: ååè¡çªãé¿ããã¯ã©ã¹å€éšããã®çŽæ¥ã¢ã¯ã»ã¹ãé²ãããã«ãåºã«ãªãããŒã¿ãããã©ã€ããŒãã屿§ïŒäŸïŒ
_my_attribute
ïŒã«æ ŒçŽããŸãã instance is None
ã®åŠç:__get__()
ã¡ãœããã§ã¯ããã£ã¹ã¯ãªãã¿ãã€ã³ã¹ã¿ã³ã¹ããã§ã¯ãªãã¯ã©ã¹èªäœããã¢ã¯ã»ã¹ãããå Žåã«çºçããinstance
ãNone
ã§ããã±ãŒã¹ãåŠçããŸãããã®å Žåããã£ã¹ã¯ãªãã¿ãªããžã§ã¯ãèªäœãè¿ããŸãã- é©åãªäŸå€ã®çºç: ããªããŒã·ã§ã³ã倱æããå Žåã屿§ã®èšå®ãèš±å¯ãããªãå Žåã¯ãé©åãªäŸå€ïŒäŸïŒ
ValueError
ãTypeError
ãAttributeError
ïŒãçºçãããŸãã - ãã£ã¹ã¯ãªãã¿ã®ããã¥ã¡ã³ãå: ãã£ã¹ã¯ãªãã¿ã¯ã©ã¹ãšããããã£ã«ããã¥ã¡ã³ããŒã·ã§ã³æååã远å ãããã®ç®çãšäœ¿çšæ³ã説æããŸãã
- ããã©ãŒãã³ã¹ã®èæ ®: è€éãªãã£ã¹ã¯ãªãã¿ããžãã¯ã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããã³ãŒãããããã¡ã€ãªã³ã°ããŠããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«å¿ããŠãã£ã¹ã¯ãªãã¿ãæé©åããŸãã
- é©åãªã¢ãããŒãã®éžæ: ããžãã¯ã®è€éããšåå©çšã®å¿
èŠæ§ã«åºã¥ããŠãçµã¿èŸŒã¿ã®
property
ã䜿çšããããã«ã¹ã¿ã ãã£ã¹ã¯ãªãã¿ã¯ã©ã¹ã䜿çšããããæ±ºå®ããŸãã - ã·ã³ãã«ããä¿ã€: ä»ã®ã³ãŒããšåæ§ã«ãè€éãã¯é¿ããã¹ãã§ãããã£ã¹ã¯ãªãã¿ã¯ãã¶ã€ã³ã®å質ãåäžãããã¹ãã§ããããããé£è§£ã«ããã¹ãã§ã¯ãããŸããã
é«åºŠãªãã£ã¹ã¯ãªãã¿æè¡
åºæ¬çãªããšä»¥å€ã«ããããããã£ãã£ã¹ã¯ãªãã¿ã¯ããé«åºŠãªæè¡ã«ã䜿çšã§ããŸãïŒ
- éããŒã¿ãã£ã¹ã¯ãªãã¿:
__get__()
ã¡ãœããã®ã¿ãå®çŸ©ãããã£ã¹ã¯ãªãã¿ã¯ãéããŒã¿ãã£ã¹ã¯ãªãã¿ïŒãŸãã¯ãã·ã£ããŠã€ã³ã°ããã£ã¹ã¯ãªãã¿ãšãåŒã°ããïŒãšåŒã°ããŸãããããã¯ã€ã³ã¹ã¿ã³ã¹å±æ§ãããäœãåªå é äœãæã¡ãŸããåãååã®ã€ã³ã¹ã¿ã³ã¹å±æ§ãååšããå ŽåãéããŒã¿ãã£ã¹ã¯ãªãã¿ãã·ã£ããŠããŸããããã¯ãããã©ã«ãå€ã®æäŸãé å»¶ããŒãåäœã«åœ¹ç«ã¡ãŸãã - ããŒã¿ãã£ã¹ã¯ãªãã¿:
__set__()
ãŸãã¯__delete__()
ãå®çŸ©ãããã£ã¹ã¯ãªãã¿ã¯ãããŒã¿ãã£ã¹ã¯ãªãã¿ãšåŒã°ããŸãããããã¯ã€ã³ã¹ã¿ã³ã¹å±æ§ãããé«ãåªå é äœãæã¡ãŸãã屿§ãžã®ã¢ã¯ã»ã¹ãŸãã¯ä»£å ¥ã¯åžžã«ãã£ã¹ã¯ãªãã¿ã¡ãœãããããªã¬ãŒããŸãã - ãã£ã¹ã¯ãªãã¿ã®çµã¿åãã: è€æ°ã®ãã£ã¹ã¯ãªãã¿ãçµã¿åãããŠãããè€éãªåäœãäœæã§ããŸããããšãã°ã屿§ãæ€èšŒãããã€å€æãããã£ã¹ã¯ãªãã¿ãæã€ããšãã§ããŸãã
- ã¡ã¿ã¯ã©ã¹: ãã£ã¹ã¯ãªãã¿ã¯ã¡ã¿ã¯ã©ã¹ãšåŒ·åã«é£æºããããããã£ã¯ã¡ã¿ã¯ã©ã¹ã«ãã£ãŠå²ãåœãŠããããããäœæããã¯ã©ã¹ã«ãã£ãŠç¶æ¿ãããŸããããã«ããããã£ã¹ã¯ãªãã¿ãã¯ã©ã¹éã§åå©çšããããã¡ã¿ããŒã¿ã«åºã¥ããŠãã£ã¹ã¯ãªãã¿ã®å²ãåœãŠãèªååããããããªã©ãéåžžã«åŒ·åãªãã¶ã€ã³ãå¯èœã«ãªããŸãã
ã°ããŒãã«ãªèæ ®äºé
ããããã£ãã£ã¹ã¯ãªãã¿ã䜿çšããŠèšèšããå Žåãç¹ã«ã°ããŒãã«ãªã³ã³ããã¹ãã§ã¯ã以äžã®ç¹ã«çæããŠãã ããïŒ
- ããŒã«ãªãŒãŒã·ã§ã³: ãã±ãŒã«ã«äŸåããããŒã¿ïŒäŸïŒéµäŸ¿çªå·ãé»è©±çªå·ïŒãæ€èšŒããå Žåãç°ãªãå°åã圢åŒããµããŒãããé©åãªã©ã€ãã©ãªã䜿çšããŸãã
- ã¿ã€ã ãŸãŒã³: æ¥ä»ãšæå»ãæ±ãéã¯ãã¿ã€ã ãŸãŒã³ã«æ³šæãã
pytz
ã®ãããªã©ã€ãã©ãªã䜿çšããŠå€æãæ£ããåŠçããŸãã - é貚: é貚å€ãæ±ãå Žåãç°ãªãé貚ãçºæ¿ã¬ãŒãããµããŒãããã©ã€ãã©ãªã䜿çšããŸããæšæºçãªé貚圢åŒã䜿çšããããšãæ€èšããŠãã ããã
- æåãšã³ã³ãŒãã£ã³ã°: ç¹ã«æååãæ€èšŒããéã«ã¯ãã³ãŒããç°ãªãæåãšã³ã³ãŒãã£ã³ã°ãæ£ããåŠçããããšã確èªããŠãã ããã
- ããŒã¿ããªããŒã·ã§ã³æšæº: äžéšã®å°åã§ã¯ãç¹å®ã®æ³çãŸãã¯èŠå¶äžã®ããŒã¿ããªããŒã·ã§ã³èŠä»¶ããããŸããããããèªèãããã£ã¹ã¯ãªãã¿ããããã«æºæ ããŠããããšã確èªããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£: ããããã£ã¯ãã³ã¢ãã¶ã€ã³ã倿Žããããšãªããã¢ããªã±ãŒã·ã§ã³ãç°ãªãèšèªãæåã«é©å¿ã§ããããã«èšèšãããã¹ãã§ãã
çµè«
Pythonã®ããããã£ãã£ã¹ã¯ãªãã¿ã¯ã屿§ã¢ã¯ã»ã¹ãšåäœã管çããããã®åŒ·åã§æ±çšæ§ã®é«ãããŒã«ã§ãããããã䜿çšãããšãèšç®ãããããããã£ã®äœæãããªããŒã·ã§ã³ã«ãŒã«ã®é©çšãé«åºŠãªãªããžã§ã¯ãæåèšèšãã¿ãŒã³ã®å®è£ ãå¯èœã«ãªããŸãããã£ã¹ã¯ãªãã¿ãããã³ã«ãçè§£ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãããæŽç·Žãããä¿å®ããããPythonã³ãŒããæžãããšãã§ããŸãã
ããªããŒã·ã§ã³ã«ããããŒã¿ã®äžè²«æ§ã®ç¢ºä¿ããããªã³ããã³ãã§ã®æŽŸçå€ã®èšç®ãŸã§ãããããã£ãã£ã¹ã¯ãªãã¿ã¯Pythonã¯ã©ã¹å ã®å±æ§åŠçãã«ã¹ã¿ãã€ãºããæŽç·Žãããæ¹æ³ãæäŸããŸãããã®æ©èœãç¿åŸããããšã§ãPythonã®ãªããžã§ã¯ãã¢ãã«ã«å¯Ÿããçè§£ãæ·±ãŸããããå ç¢ã§æè»ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãªããŸãã
property
ãŸãã¯ã«ã¹ã¿ã ãã£ã¹ã¯ãªãã¿ã䜿çšããããšã§ãPythonã®ã¹ãã«ã倧å¹
ã«åäžãããããšãã§ããŸãã