python 类的语法

# self 指向的是类的 【实例对象】
class Point:
    name = '类属性'  # 类属性

    def __init__(self, x, y):
        self.x = x  # 实例属性
        self.y = y
        pass

    # 实例方法
    def getCoordinates(self):
        print('实例方法:(X:{},Y:{})'.format(self.x, self.y))
        pass

    # 类方法
    @classmethod
    def classmethodFun(cls):
        print('类方法访问:{}'.format(cls.name))
        cls.classmethodFun2()
        pass

    # 类方法
    @classmethod
    def classmethodFun2(cls):
        print('被类方法访问的类方法:{}'.format(cls.name))
        pass

    # 静态方法
    @staticmethod
    def staticmethodFun():
        print('我是【{}】的静态方法'.format(Point.__name__))
        pass

    pass


# point 实例对象
# Point(20, 35) 类对象
point = Point('实例属性X', '实例属性Y')
print('point.name:', point.name)  # yes
print('point.x:', point.x)  # yes
point.getCoordinates()  # yes

print('Point.name:',Point.name)  # yes
# print(Point.x)  # no
# Point.getCoordinates()  # no

# TODO 通过 实例对象point可以访问类的 【属性】 【实例属性】 【实例方法】 【类方法】 【静态方法】
# TODO 通过   类对象Point可以访问类的 【属性】                         【类方法】 【静态方法】  

print('*' * 40, '👇类方法 使用@classmethod关键字')
point.classmethodFun()
Point.classmethodFun()

print('*' * 40, '👇类的静态方法 使用@staticmethod关键字')
Point.staticmethodFun()  # 使用类对象进行 操作
point.staticmethodFun()  # 使用实例对象进行操作 但是没有意义 因为声明了类方法就是不想要定义
# 那么为什么要使用静态方法
# 1. 由于静态方法主要用来存放逻辑性的代码 与 类 以及 实例对象没有交互
# 2. 也就是说,在静态方法中,不会涉及到与 类中方法和属性的操作
# 3. 数据的资源能够得到 有效的充分利用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容