繁体   English   中英

如何在 __init__ 中设置 python 属性

[英]How to set a python property in __init__

我有一个类的属性,我希望将其转换为property ,但该属性是在__init__设置的。 不知道这应该怎么做。 无需在__init__设置属性,这很容易并且运行良好

import datetime

class STransaction(object):
    """A statement transaction"""
    def __init__(self):
        self._date = None

    @property
    def date(self):
        return self._date

    @date.setter
    def date(self, value):
        d = datetime.datetime.strptime(value, "%d-%b-%y")
        self._date = d

st = STransaction()
st.date = "20-Jan-10"

但是一旦需要在__init__初始化,它就会变得更加复杂,我不确定正确的操作过程。

class STransaction(object):
    """A statement transaction"""
    def __init__(self, date):
        self._date = None

对我来说奇怪的是,以下似乎有效,但闻起来很糟糕。

class STransaction(object):
    """A statement transaction"""
    def __init__(self, date):
        self._date = None
        self.date = date

    @property
    def date(self):
        return self._date

    @date.setter
    def date(self, value):
        d = datetime.datetime.strptime(value, "%d-%b-%y")
        self._date = d

__init__设置属性的正确方法是什么?

谢谢,亚伦。

我没有看到您的代码有任何实际问题。 __init__ ,类是完全创建的,因此属性是可访问的。

class STransaction(object):
    """A statement transaction"""
    def __init__(self, date):
        self._date = None #1
        self.date = date  #2

如果您想设置代理字段self._date而不执行您的设置器,请使用 #1 行。 如果您也想在启动时执行 setter,请使用 #2。 两种方式都是对的,只是看你想做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM