python基础笔记之面向对象

# class Foo:
# name="kevin"
#
# def __init__(self,puppy):
# self.tomato= 'red'
# self.dog = puppy
# def bar(self,name):
# print('you are %s' % name)
# print('i am %s' % self.name)
#
# a = Foo('金毛') #这里传递的参数 是初始化 __init__
# a.bar('tugou')
# #上面的self指代类本身
#
# #上面的属性可以被串改,比如
# a.dog="二哈"
# print(a.dog)
#如何防止串改数据 就是把变量 或者方法 变成私有 加上_
# class Foo:
# name="kevin"
# def __init__(self,puppy):
# self.__tomato= 'red'
# self.__dog = puppy
# def bar(self):
# print(self.__dog)
#
# a = Foo("金毛")
# a.bar() #金毛
# a.__dog="二哈"
# a.bar() # 金毛

#面向对象的特点 : 封装,继承,多态
#继承
class Student:
def __init__(self,name,age):
self.name=name
self.age =age

def detail(self):
print(self.name)
print(self.age)

class PrimaryStudent(Student): #这里的student就是继承的上面的student 类
def lol(self):
print("不服 solo!")

class CollegeStudent(Student):
def __init__(self,name,age,gf):
# 于是父级init会被直接overwrite
self.name = name
self.age = age
self.gf = gf

def gf_detail(self):
print(self.gf)

# a = PrimaryStudent('kevin',44)
# a.lol()
# a.detail()

# b = CollegeStudent('kevin',32,'lara')
# b.detail()
# b.gf_detail()

##如何获得对象的信息 用type()
# print(type(None))

##isinstance()可以判断一个对象是否是某种类型(包括继承关系)
# class A:
# pass
# class B(A):
# pass
# class C(B):
# pass
# y = C()

# print(isinstance(y,B)) #判断是否和类C有继承关系

#使用dir()方法获得一个对象的所有属性和方法 ,可以使用dir()函数,它返回一个包含字符串的list
# print(dir(Student))

#如何重写内置的规则 比如如何重置计算长度的内置方法
# class yObjest:
# # test = 1
# def __len__(self):
# return 1234
#
# a = yObjest()
# print(a.__len__())

#获取内置对象的属性 或者是判断内置对象 以及设置对象
# print(hasattr(a,'x')) #判断对象是否有x属性
# print(setattr(a,'x',1))#给对象设置一个属性值
# print(hasattr(a,'x'))#再次判断对象 是否有x属性
# print(getattr(a,'x'))#结果有了 查看x属性
# print(getattr(a,'x',404))#结果有了 查看x属性 如果没有则返回404
# print(yObjest.test)

#如何直接删除一个类的属性
# class yObjest:
# test = 1
# def __len__(self):
# return 1234
#
# a = yObjest()
# a.test=2
# print(a.test)
# del a.test
# print(a.test)

#模块和包 : python的程序由包(package) ,模块(module)和函数组成,包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合
# 包就是完成特定任何的工具箱,python 提供了许多有用的工具包,入2字符串处理,图形用户接口,web应用,图形图像处理等。这些自带的工具包和模块安装在python的安装目录下lib子目录中
# import sys
# print(sys.path)

#如果发现自己引用的包不存在的时候,怎么办 先调用上面的sys.path方法,如果发现系统引用的位置不包括我们安装的包 用 sys.path.append('包的路径')添加包的路径
# print(sys.path.append('包的路径'))

#模块的导入方法
#第一种就是上面的import方式
#第二种用form-import语句实现部分或者全部导入
# from sys import path #直接导入path方法
# from sys import path as getpath #直接导入path方法 并重命名
# from sys import * #直接导入所有
# print(path)

#安装包的方法 pip install
posted on 2018-01-03 17:15  一只猪儿虫  阅读(215)  评论(0编辑  收藏  举报