IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python中面向对象之类属性 对象属性 类方法 对象方法 静态方法的理解 -> 正文阅读

[人工智能]python中面向对象之类属性 对象属性 类方法 对象方法 静态方法的理解

属性和方法是面向对象中的叫法,一般是一个类被定义的时候会被用户添加.其中属性有:类属性和对象属性,方法有:类方法 对象方法 静态方法.
1.类属性:直接声明在类中的变量属于类的属性,可以被类直接调用,也可以被实例化的对象调用.

class Person(object):
    country = '中国'

    def f1(self):
        print("这是对象方法")

obj1 = Person()
print(Person.country,obj1.country)

运行结果:

中国 中国

需要注意的是,通过对象调用去修改它的值是不生效的.

class Person(object):
    country = '中国'

    def f1(self):
        print("这是对象方法")

obj1 = Person()
print(Person.country,obj1.country)
print(obj1.__dict__)
obj1.country = '美国'
print(Person.country,obj1.country)
print(obj1.__dict__)

运行结果:

中国 中国
{}
中国 美国
{'country': '美国'}

可以看到类变量的值没有改变,也就是上面试图去修改类变量的值,python会自动创建一个country对象变量,并赋值为美国,通过__dict__查看对象obj1的属性可以看到增加了country的对象属性.
2.对象属性:在类中的方法中声明的变量,只属于对象,调用的方法为self.变量名,或者对象名.变量名.

class Person(object):
    country = '中国'
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def getInfo(self):
        print(self.name,self.age,self.country)

obj1 = Person('张三',18)
print(obj1.name)
print(obj1.age)

运行结果:

张三
18

3.类方法:在类定义的方法,且使用@classmethod修饰的,形参为cls的,这样的方法就是类方法.类方法可以被类直接调用,也可以被对象调用.

class Person(object):
    country = '中国'
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @classmethod
    def getInfo(cls):
        print(cls.country)

obj1 = Person('张三', 18)
print(obj1.name)
print(obj1.age)
Person.getInfo()
obj1.getInfo()

运行结果:

张三
18
中国
中国

4.对象方法:在类定义的,形参为self的.可以被对象调用.

class Person(object):
    country = '中国'
    def __init__(self, name, age):
        self.name = name
        self.age = age
    @classmethod
    def getInfo(cls):
        print(cls.country)

    def getTest(self):
        self.getInfo()
obj1 = Person('张三', 18)
print(obj1.name)
print(obj1.age)
Person.getInfo()
obj1.getInfo()
obj1.getTest()

运行结果:

张三
18
中国
中国
中国

上面的__Init__()和getTest()均是对象方法.

5.静态方法:使用@staticmethod声明的,参数没有要求,可以被类直接调用,也可以被对象调用.与类方法,对象方法直接没有什么关联,只是表示该方法属于在这个类定义的命名空间中.

class Person:
    @classmethod
    def class_method(cls):
        print('class = {0.__name__} ({0})'.format(cls))

        cls.HEIGHT = 170

    @staticmethod
    def sta_fun():
        print("这是静态方法")

Person.class_method()
print(Person.__dict__)
obj = Person()
Person.sta_fun()
obj.sta_fun()

运行结果:

class = Person (<class '__main__.Person'>)
{'__module__': '__main__', 'class_method': <classmethod object at 0x000001BBBB80A240>, 'sta_fun': <staticmethod object at 0x000001BBBB80A0F0>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None, 'HEIGHT': 170}
这是静态方法
这是静态方法
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:14:10  更:2021-10-06 12:17:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:26:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码