python类变量方法变量_默认为python类方法中的类变量?

我正在编写一个类方法,如果没有提供其他值,我想使用类变量

def transform_point(self, x=self.x, y=self.y):

但是……这似乎不起作用:

NameError: name 'self' is not defined

我觉得有一种更聪明的方法可以做到这一点.你会怎么做?

解决方法:

您需要使用sentinel值,然后将其替换为具有所需实例属性的值.没有一个好的选择:

def transform_point(self, x=None, y=None):

if x is None:

x = self.x

if y is None:

y = self.y

请注意,函数签名只执行一次;您不能将表达式用于默认值,并期望每次调用函数时都会更改这些值.

如果必须能够将x或y设置为None,则需要使用不同的唯一单一值作为默认值.在这种情况下,使用object()的实例通常是一个伟大的哨兵:

_sentinel = object()

def transform_point(self, x=_sentinel, y=_sentinel):

if x is _sentinel:

x = self.x

if y is _sentinel:

y = self.y

现在你也可以调用.transform_point(无,无).

标签:python,class,default-value

来源: https://codeday.me/bug/20190823/1696053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值