Python面向对象

1. 对象

1.1多态

意味着可以对不同类的对象使用同样的操作

1.2封装

对外部世界隐藏对象的工作细节

1.3继承

以通用的类为基础建立专门的类对象

 

2.类和类型

2.1 创建类

#创建类
class mycalss:
    z = 10086
    
    #类的方法与普通的函数有一个特别的区别,它们必须有一个额外的第一个参数名称self
    #self可以随便叫什么,比如this,但是因为它代表对象自身,所以习惯叫做self
    def add(self,x,y):
        print(x+y)


    def getting(self):
        print("Hello")
    
    def info(self,name,age):
        self.name = name
        self.age = age

obj = mycalss()
obj.getting()
obj.add(2,3)
obj.info("Bob","18")
print(obj.name,obj.age)

输出:
Hello
5
Bob 18

2.2 私有化

class mycalss:
    name = "Bob"
    
    #私有化方法
    def __inaccessible(self):
        print("现在__inaccessible从外部是无法访问的")


obj = mycalss()
#访问name
print(obj.name)
#可以修改name
obj.name = "Jack"
print(obj.name)

obj.__inaccessible()

输出:
Bob
Jack
Traceback (most recent call last):
  File "c:\Users\jm\Desktop\PythonSpace\Untitled-6.py", line 17, in <module>
    obj.__inaccessible()
AttributeError: 'mycalss' object has no attribute '__inaccessible'
class mycalss:
    name = "Bob"
    
    #私有化方法 现在__inaccessible从外部是无法访问的
    def __inaccessible(self):
        print("__inaccessible")

    def accessible(self):
        self.__inaccessible()#方法内部可以访问

obj = mycalss()
obj.accessible()

输出:
__inaccessible

2.3类的属性 

  可以使用点(.)来访问对象的属性

  也可以使用以下函数的方式来访问属性:

getattr(obj, name[, default]) : 访问对象的属性
hasattr(obj,name) : 检查是否存在一个属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性
delattr(obj, name) : 删除属性
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性

2.4 继承

class Filter:
    def init(self):
        self.blocked = []

    def filter(self,sequence):
        return [x for x in sequence if x not in self.blocked]

class SPAMFilter(Filter):#SPAMFilter是Filter的子类(单继承)
    def init(self):#重写init方法
        self.blocked = ["SPAM"]

f = Filter()
f.init()
print(f.filter([1,2,3]))

s = SPAMFilter()
s.init()
print(s.filter(["SPAM","SPAM","eggs","bacon","SPAM"]))#过滤“SPAM”

输出:
[1, 2, 3]
['eggs', 'bacon']
#多继承

class class1(object):
    def getting(self):
        print("class1")

class class2(object):
    def getting2(self):
        print("class2")    

class class3(class1,class2):
    pass

cl = class3()
cl.getting()
cl.getting2()

输出:
class1
class2

2.5构造函数

 class student(object):
     def __init__(self, name,age):         
        self.name = name
        self.age  = age

s = student("Bob","18")
print(s.name,s.age)

输出:
Bob 18

 

 
posted @ 2017-09-11 13:09  __Altair  阅读(221)  评论(0编辑  收藏  举报