Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现使用类和当前对象(self)的python类函数?_Python_Python 3.x - Fatal编程技术网

如何实现使用类和当前对象(self)的python类函数?

如何实现使用类和当前对象(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 =

我知道我们可以显式地编写类的名称来获取类属性,当您需要该方法来获取从一个对象到另一个对象变化的类属性时,“self”作为第一个参数应该可以正常工作

然而,我真的不知道如何以一种奇特的方式做到这两个方面

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也适用于实例-但是如果您为其中任何一个分配了一些内容,那么它们对于该实例将是不同的。