python中面向对象之类属性 对象属性 类方法 对象方法 静态方法的理解
2021/10/5 22:11:13
本文主要是介绍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} 这是静态方法 这是静态方法
这篇关于python中面向对象之类属性 对象属性 类方法 对象方法 静态方法的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享