如何实现使用类和当前对象(self)的python类函数?
我知道我们可以显式地编写类的名称来获取类属性,当您需要该方法来获取从一个对象到另一个对象变化的类属性时,“self”作为第一个参数应该可以正常工作 然而,我真的不知道如何以一种奇特的方式做到这两个方面如何实现使用类和当前对象(self)的python类函数?,python,python-3.x,Python,Python 3.x,我知道我们可以显式地编写类的名称来获取类属性,当您需要该方法来获取从一个对象到另一个对象变化的类属性时,“self”作为第一个参数应该可以正常工作 然而,我真的不知道如何以一种奇特的方式做到这两个方面 class Alpha: base = 0 round = 360 def __init__(self, radius: float, angel: float = 0): self.radius = radius self.angel =
class Alpha:
base = 0
round = 360
def __init__(self, radius: float, angel: float = 0):
self.radius = radius
self.angel = angel
def spin(self, angel: float = 0, K: int = 0):
# need to use both 'base' & 'self.radius'
# should I use it like that?
if self.radius is not Alpha.base and angel is not None:
self.angel = (angel + (360 * K))
可以像我一样使用它吗
可以像我一样使用它吗
我认为这是创建静态类变量的正确方法。我找不到任何官方资源,但很多著名的教程网站都喜欢或解释这种技术。
更新:这里是最新的
可以像我一样使用它吗
我认为这是创建静态类变量的正确方法。我找不到任何官方资源,但很多著名的教程网站都喜欢或解释这种技术。
更新:这里是。如果您不打算对它进行子类化,那么您的方式很好 但是,如果要将其子类化,请使用以下命令: 阿尔法类: 基数=0 圆形=360 定义初始自身,半径:浮动,角度:浮动=0: 自半径=半径 self.angel=天使 def spinself,angle:float=0,K:int=0: 需要同时使用“基本”和“自半径” 我应该那样使用它吗? 如果self.radius不是self.\uuuuuuu类\uuuuuuu.base和angle不是None: self.angle=天使+360*K self.\uuuu class\uuuuu返回类而不是对象 阿尔法类: 基数=0 圆形=360 定义初始自身,半径:浮动,角度:浮动=0: 自半径=半径 self.angel=天使 def spinself,angle:float=0,K:int=0: 需要同时使用“基本”和“自半径” 我应该那样使用它吗? 如果self.radius不是self.base且angle不是None: self.angle=天使+360*K 也会起作用,因为类变量被携带到对象中,这不会像预期的那样与没有self作为第一个的函数一起工作 foo类: def barfoobar: 返回foobar*2 foobar=foo 巴福 这将导致 TypeError:bar接受1个位置参数,但给出2个或类似错误 要防止此错误,只需添加decorator staticmethod,如以下示例所示: foo类: @静力学方法 def barfoobar: 返回foobar*2 foobar=foo 巴福
>>>foofoo如果您不打算将其子类化,那么您的方式很好 但是,如果要将其子类化,请使用以下命令: 阿尔法类: 基数=0 圆形=360 定义初始自身,半径:浮动,角度:浮动=0: 自半径=半径 self.angel=天使 def spinself,angle:float=0,K:int=0: 需要同时使用“基本”和“自半径” 我应该那样使用它吗? 如果self.radius不是self.\uuuuuuu类\uuuuuuu.base和angle不是None: self.angle=天使+360*K self.\uuuu class\uuuuu返回类而不是对象 阿尔法类: 基数=0 圆形=360 定义初始自身,半径:浮动,角度:浮动=0: 自半径=半径 self.angel=天使 def spinself,angle:float=0,K:int=0: 需要同时使用“基本”和“自半径” 我应该那样使用它吗? 如果self.radius不是self.base且angle不是None: self.angle=天使+360*K 也会起作用,因为类变量被携带到对象中,这不会像预期的那样与没有self作为第一个的函数一起工作 foo类: def barfoobar: 返回foobar*2 foobar=foo 巴福 这将导致 TypeError:bar接受1个位置参数,但给出2个或类似错误 要防止此错误,只需添加decorator staticmethod,如以下示例所示: foo类: @静力学方法 def barfoobar: 返回foobar*2 foobar=foo 巴福
>>>我不明白这个问题。您所做的不起作用吗?您可以使用self.base。类实例从类继承值。请阅读中的“实例属性”和“类属性”。当您编写代码来获取不同对象的类属性时,实际上是指实例属性。如何实现使用类和当前对象自身的python类函数?-如果方法引用当前对象,则它不是类方法。根据定义,类方法没有当前对象。self.base和self.round也适用于实例-但是如果您为其中任何一个分配了一些内容,那么它们在该实例中都会有所不同。我不理解这个问题。您所做的不起作用吗?您可以使用self.base。类实例从类继承值。请阅读中的“实例属性”和“类属性”。当您编写代码来获取不同对象的类属性时,实际上
y引用实例属性。如何实现使用类和当前对象自身的python类函数?-如果方法引用当前对象,则它不是类方法。根据定义,类方法没有当前对象。self.base和self.round也适用于实例-但是如果您为其中任何一个分配了一些内容,那么它们对于该实例将是不同的。