python入门学习之day8

面向对象

 什么是面向对象:object oriented programming
程序设计语言中的面向对象:
把现实中实际的物体, 使用程序设计语言描述出来。

怎么去描述?
综合物体的特征:类:属性以及功能,描述的是一类物体
把现实中的物体抽象成程序设计语言中的类

什么是类,什么是对象?
#每个人手里都有一台电脑
#laptop:笔记本这一类东西:
     特征:
 

面向对象的使用:在软件设计阶段:object(对象)relation(关系)
               在现实中的同一类物体,用类来描述
               具体到某一个物体的时候,这个就是对象 
               对象从类而来》对象的类型就是类
               类就是一种数据类型,你自己定义的类就是一种新的数据类型
                data = 1   -->  data  -->  int

如何去定义类
语法
class ClassName:
  类中的语句
说明:类目使用驼峰命名法(多个连接在一起,首字母大写)

类中应该包含什么?
    类把数据与功能绑定在一起
         数据:定义变量
         功能:函数 function
    在类中定义的函数,不叫函数,叫方法【因为这个函数只属于这个类
                                                                 只服务这个类和这类对象】
      在定义方法的时候会默认携带self参数,这个参数指向自己类的对象
       具体指向哪个对象?调用这个方法的对象

class CoolBoy:
    name = None
    age = None
    def print_info(self):
        print("what a swag boy")

qiu = CoolBoy()
x = Coolboy()
qiu.name = ???
 x的name不会变

类变量
定义在类中,方法外的变量,叫做类变量
 类变量用于类的所有实例共享的属性

对象变量
实例【对象】变量用于每个实例的唯一数据
对象之间相互独立
问题:如何取定义对象变量/实例变量
写在__init__中
def __init__ (self, name, age)这里要传参数
如果方法里没有name就去init对象变量中找

class Person:
    type = "person"
    def print_info(self):
        print(self.name, self.age)
    def __init__(self, name, age):
        self.name = name
        self.age = age

zhangsan = Person("zhangsan", 18)
lisi = Person("lisi", 20)
print(zhangsan.type)
zhangsan.print_info()
lisi.print_info()

work

1.定义一个类(不限定定义哪个类):
要求: a.需要有一个类变量
b.需要有>=2个的对象变量
c.定义一个方法:打印类变量和对象变量
d.使用print打印对象->输出为This is a object
e.实例化两个对象:且两个对象相加等于2
f.为对象添加一个临时变量temp_var

class Arg:
    arg = 1
    def __init__(self, arg, name):
        self.arg = arg
        self.name = name
    def print_info(self):
        print("This is a object")
arg1 = Arg(1, "zhangsan")
arg2 = Arg(1, "lisi")
print(arg1.arg + arg2.arg)
arg1.print_info()
arg1.temp_var = "unkown"
print(arg1.temp_var)


2.super的使用:
定义一个类A, 里面又一个方法print_info
定义一个类B, 里边有一个方法print_info和一个方法say_something
定义一个类C, 里边有一个方法say_something
定义一个类D, 里边有一个方法print_info和一个方法say_something
定义一个类E,继承类A, 类B, 类C,类D
实例化类E的对象
执行print_info和say_something方法
利用super,让执行print_info时调用B中print_info
利用super, 让执行say_something时调用C中say_something
利用super, 让执行print_info和say_something时调用
D中print_info和say_something 

class A:
    def print_info(self):
        print("This is A")
class B:
    def print_info(self):
        print("This is B")
    def say_something(self):
        print("My name is B")
class C:
    def say_something(self):
        print("My name is C")
class D:
    def print_info(self):
        print("This is D")
    def say_something(self):
        print("My name is D")

class E(A, B, C, D):
    def print_info(self):
        super(A, E).print_info(self)
    def say_something(self):
        super(B, E).say_something(self)
e = E()
e.print_info()
e.say_something()
class E(A, B, C, D):
    def print_info(self):
        super(C, E).print_info(self)
    def say_something(self):
        super(C, E).say_something(self)

你可能感兴趣的:(1024程序员节,python,开发语言)