python-面向对象编程,,包:文件夹,可以有多
python-面向对象编程,,包:文件夹,可以有多
包:文件夹,可以有多级
模块:py文件
在python中,为避免不同模块重名,可以将同名模块放入不同包中。
1.如何区分包和普通目录:
在每个包里都必须有一个__init__.py的文件,即便是空文件
2.旧版本中新版本代码的使用:
from __future__ import xxx
实例属性
由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,实例的属性可以像普通变量一样进行操作
1.初始化实例属性
__init__(self,xxx,…)
class Person(object): def __init__(self,name,gender,birth): #初始化实例属性 self.name=name self.gender=gender self.birth=birthxiaoming = Person(‘Xiao Ming‘, ‘Male‘, ‘1990-1-1‘, job=‘Student‘)print (xiaoming.name)print (xiaoming.job)
2.任意关键字参数
接受任意关键字参数:**kw
初始化:self.__dict__.update(kw)
3.访问限制
如果一个属性由双下划线开头,该属性就无法被外部访问
4.实例方法
即类中定义的函数,第一个参数为self。
实例方法其实也是属性,它实际上是一个函数对象。比如说p1.get_grade返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade()才是方法调用。
在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
# -*- coding:utf-8 -*-class Person(object): def __init__(self, name, score): self.name=name self.__score=score def get_grade(self): #实例方法,即函数 if self.__score>=90: return ‘A-优秀‘ elif self.__score>=60: return ‘B-及格‘ else: return ‘C-不及格‘p1 = Person(‘Bob‘, 90)print (p1.get_grade)#返回函数对象print (p1.get_grade())#方法调用
类属性
如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个
1.类属性和实例属性名字冲突
当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
2.类方法
通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。
因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
class Person(object): __count = 0 @classmethod #将方法绑定到类上 def how_many(cls): return cls.__count #类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.__count 实际上相当于 Person.__count。 def __init__(self,name): self.name=name Person.__count+=1print (Person.how_many())#本来私有属性是不允许外部访问的,但可以通过类方法访问p1 = Person(‘Bob‘)print (Person.how_many())
python-面向对象编程
相关内容
- 1 Python基础,,python基础py
- Python 链式赋值的坑,python链式赋值,这里的 b + 3 就是
- Python入门-初始面向对象,python入门面向对象, 之前
- python之路---05 字典 集合,python---05,二十、字典
- Python——FTP,pythonftp,需求分析1、多用户登
- Appium(Python)驱动手机淘宝App,appiumpython,请注意操作步
- Python selenium中添加JS并执行JS语句,pythonselenium, 众所
- Python3.6列表函数&方法,python3.6函数,函数:1、l
- 字典中键重复时——pycharm和python IDLE打印的一个差别,
- Python 爬虫实例(7)—— 爬取 新浪军事新闻,python新浪
评论关闭