|
Python |
PHP |
模块和包管理 |
一个.py文件就是一个模块
为了避免命名冲突可以引入上层目录作为包进行模块管理
作为包的目录中必须要有名为 __init__.py的文件(里面可以是空的) 该文件的模块名就是包名
pycharm中右键文件夹标记目录为根来源就可以import不报未找到了 |
|
自定义模块 |
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #模块备注 'a test module' #作者 __author__ = 'zhaohuiqi'
import sys #模块主体代码 def test(): args = sys.argv if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!') #设置为命令行时自动执行 if __name__=='__main__': test() |
|
私有函数 |
def _function(): pass
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public |
|
|
Python |
PHP |
OOP |
#类定义 class Student(object): #构造函数 def __init__(self, name, score): self.name = name self.score = score #方法 def print_score(self): print('%s: %s' % (self.name, self.score))
zhq = Student("zhaohuiqi",100) zhq.print_score() |
|
类 |
object为当前类继承的类,如果没有明确指定的类,就都用object class Student(object): pass |
|
对象 |
obj = Student() |
|
对象属性绑定 |
obj.name = 'zhangsan' |
|
构造方法 |
构造方法可以设置默认必需属性 def __init__(self,name,age,…): self.name = name self.age = age … |
|
类方法 |
类内部定义的方法第一个参数固定是self,调用的时候不需要传入 |
|
|
Python |
PHP |
类属性访问限制 |
属性私有化:属性名前面加__ #类定义 class Student(object): #构造函数 def __init__(self, name, score): self.__name = name self.__score = score #方法 def print_score(self): print('%s: %s' % (self.__name, self.__score))
zhq = Student("zhaohuiqi",100) zhq.print_score() 修改完成之后__name和__age只能在函数内部访问 如果想设置外部允许访问 def get_name(self): return self.__name 如果想要设置外部允许修改 def set_name(self,name): self.__name = name |
__set __get |
几种变量 |
__name__:特殊变量,可以直接访问 __name:私有变量,只允许类内访问 _name:约定私有,实际内外都可以访问 |
|
|
Python |
PHP |
类的继承 object位置写入父类即可 |
class Animal(object): def run(self): print('Animal is running...')
class Dog(Animal): def run(self): print('Dog is running...') def eat(self): print('Eating meat...')
class Cat(Animal): def run(self): print('Cat is running...') 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写 对象是否属于某个类:isinstance(obj,class) |
|
获取对象信息 |
判断对象类型:type(obj):返回值为类名 对象是否属于某个类:isinstance(obj,class),一般用这个判断,第二个参数可以是多个类型(int,str,…)
获得一个对象的所有属性和方法:dir()
getattr(obj, 'key ',default)、setattr(obj, 'key ',value)以及hasattr(obj, 'key ') |
|
类属性 类似于php的静态属性 |
class Student(object): name = 'Student' 区别于对象的属性,不要设置对象的属性和类的属性的名称相同,容易出问题 |
|