Python_day5:模块与包管理

 

Python

PHP

模块和包管理

一个.py文件就是一个模块

 

为了避免命名冲突可以引入上层目录作为包进行模块管理

 

作为包的目录中必须要有名为

__init__.py的文件(里面可以是空的)

扫描二维码关注公众号,回复: 2084367 查看本文章

该文件的模块名就是包名

 

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'

区别于对象的属性,不要设置对象的属性和类的属性的名称相同,容易出问题

 











猜你喜欢

转载自blog.csdn.net/zhq_zvik/article/details/80277223