定义:

拥有共同属性和方法的一类事物,比如 人类、动物类等

对象:

具体的某一个事物。 类下面的调用者就是对象,比如说动物一类,它下面的对象有猪、狗等 

在编程的世界里是先有类后有对象 

类是实例的抽象,父类是子类的抽象。而对象是类中方法或属性实例出来的

创建类和对象 :

对象 = 类名 (这里写上你对应的参数值,self不用传值)
调用方法:
对象.函数名()

 

类的属性:

 类名.类属性

 类名.类方法(不能调用 )

 

对象的属性:

对象名.对象属性 对象名.类属性

对象名.方法()(调用方法,也叫做调用 动态属性)

面向对象之间的交互:

在多个面向对象之间互相的调用

 

计算面积和周长

import math
class Round:
    def __init__(self,radius):
        self.radius = radius
    def area(self):
        print('round is area%s'%(math.pi*self.radius**2))
    def primeter(self):
        print('round is primeter%s'%(math.pi*self.radius*2))
round = Round(10)
round.area()
round.primeter()

 

类的命名空间

对于类的静态属性:(属于类内部的命名空间)

类.属性: (调用解释类的属性)

对象.属性: 就是先从自己的命名空间寻找如果有应用自己的,没有就到类里去寻找

class A:
    ret = 'fang'
a = A()
print(A.ret)
print(a.ret)
a.ret = 'fangjie'
print(a.ret)
print(A.ret)

 

类的动态属性(方法):(属于类内部的命名空间)

这个方法本身就存在于类的空间,根本不会存在对象 的内存中

如果用对象调用类的方法,需要在类的内存中产生一个地址 来对应类中的方法

class A:
    def func(self):
        print(111)
a = A()
a.func()
a.func = 888
print(a.func)
a.func()  # 这个打印的是 666() int 是不能被调用的

 

 对象的属性:是通过init 方法初始化得来的

(类内和self发生联系类外和对象名发生联系)

对象的属性只存在于对象的命名空间

只能被对象来调用和修改,如果类来调用就会报错

class A:
    pass
a = A()
a.name = 'alex'
print(a.name)
print(A.name)  #没有属性name 会报错

 

面向对象的组合:

一个类的对象是另一个类的属性 。 

组合表达是什么和什么的关系

组合的好处: 增强了代码的重用性

 

import math
class Round:
    def __init__(self,radius):
        self.radius = radius
    def area(self):
        return math.pi*self.radius**2
    def primeter(self):
        return math.pi*self.radius*2
class BSRound:
    def __init__(self,bradius,sradius):
        self.bradius = Round(bradius)
        self.sradius = Round(sradius)
    def area(self):
        return self.bradius.area() - self.sradius.area()
    def primeter(self):
        return self.bradius.primeter() - self.sradius.primeter()
round = BSRound(10,5)
print(round.area())
print(round.primeter())

 

class Course:
    def __init__(self,course_name,period,price,teacher):
        self.course_name = course_name
        self.period = period
        self.price = price
        self.teacher = teacher
class Student:
    def __init__(self,name,sex,age,course):
        self.name = name
        self.sex  = sex    
        self.age = age
        self.course = course
course = Course('Python',8,20000,'')
student = Student('田振江','',27,course)
print(student.course.period)
print(student.course.teacher)
print(student.course.course_name)

 

posted on 2017-09-14 20:22  远去  阅读(103)  评论(0编辑  收藏  举报