Python:在实例方法中一般引用类?

发布于 2024-12-05 12:09:39 字数 516 浏览 1 评论 0 原文

这个问题类似,但它涉及静态方法:在 Python 中,如何以静态方式通用引用一个类,例如 PHP 的“self”关键字?

如何在实例方法中通用引用一个类?

例如

#!/usr/bin/python
class a:
    b = 'c'
    def __init__(self):
        print(a.b) # <--- not generic because you explicitly refer to 'a'

    @classmethod
    def instance_method(cls):
        print(cls.b) # <--- generic, but not an instance method

This question is similar, but it pertains to static methods: In Python, how do I reference a class generically in a static way, like PHP's "self" keyword?

How do you refer to a class generically in an instance method?

e.g.

#!/usr/bin/python
class a:
    b = 'c'
    def __init__(self):
        print(a.b) # <--- not generic because you explicitly refer to 'a'

    @classmethod
    def instance_method(cls):
        print(cls.b) # <--- generic, but not an instance method

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

轮廓§ 2024-12-12 12:09:39

对于旧式类(如果您的代码是 Python 2.x 代码,并且您的类不是从 object 继承的),请使用 __class__ 属性

def __init__(self):
    print(self.__class__.b) # Python 2.x and old-style class

对于新式类(如果您的代码是Python 3代码),请使用type

def __init__(self):
    print(self.__class__.b) # __class__ works for a new-style class, too
    print(type(self).b)

在内部,type 使用 __class__ 属性。

For old-style classes (if your code is Python 2.x code, and your class in not inheriting from object), use the __class__ property.

def __init__(self):
    print(self.__class__.b) # Python 2.x and old-style class

For new-style classes (if your code is Python 3 code), use type:

def __init__(self):
    print(self.__class__.b) # __class__ works for a new-style class, too
    print(type(self).b)

Internally, type uses the __class__ property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文