如何在python def中使用self设置默认参数?

时间:2018-02-23 04:50:12

标签: python-3.x

我正在尝试将__init__变量称为默认变量,但它没有调用

class test1:
    def __init__(self,name):
        self.name = name
    def method1(self,name2=self.name):
        return name2

如果我将此功能称为

from test import test1
ma = test1("mkHun")

va = ma.method1() # Here I am expected output is mkhun

ca = ma.method1("new name")

在JavaScript中,此功能称为default parameters。这个功能在python中是否可用或我的代码有问题?

2 个答案:

答案 0 :(得分:2)

这是实现类似功能的一种方法。其他人可能有更多的pythonic方式。代码受docs here

启发
{{1}}

答案 1 :(得分:0)

class test1:
    def __init__(self,name):
        self.name = name

    def method1(self, name2="This would work"):
        """You can already use self.name here without taking it from the method argument
        since self.name always exists, you don't need to put it in the method arguments"""
        return name2


ma = test1("mkHun")

va = ma.method1() # Here I am expected output is mkhun

ca = ma.method1("new name")

print(ma.name, "--->", va,"--->", ca)

self.variable对于你在类中定义的每个方法都是可用的,但是@staticmethod,所以你可以简单地给它一个None作为默认参数,如果参数是None,你可以在你的方法中使用{{1如果它不是None并且参数确实存在,请改用它。希望它有所帮助。