码迷,mamicode.com
首页 > 编程语言 > 详细

python学习7_1面向对象基本概念和用法

时间:2018-08-15 00:39:00      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:变量   elf   运行   存在   oom   style   python   xxx   对象   

定义类时会立刻触发类体代码的运行,产生名称空间

class OldBoySchool:
    school = oldBoy

    def choose_course(self):
        print(is choosing course)

访问类的属性

print(OldBoySchool.school)

 访问类的方法,对类来说,类方法就是普通的方法

print(OldBoySchool.choose_course(123))

 

stu1 = OldBoySchool()
stu2 = OldBoySchool()

#所有对象和类变量的内存地址都一样
print(id(stu1.school), id(stu2.school),id(OldBoySchool.school))

#对象的绑定方法地址一样,对象和类的方法地址不一样
print(id(stu1.choose_course), id(stu2.choose_course),id(OldBoySchool.choose_course)) #2289801247880 2289801247880 2289804409440

 

重新定义一个类

class OldBoySchool2:
    school = oldBoy

#调用类的时候自动出发执行
               stu1
    def __init__(self, name, age, sex):
        self.name = name # stu1.name
        self.age = age
        self.sex = sex

    def choose_course(self):
        print(%s is choosing course%self.name)

 

调用类发生了两件事

1、会产生一个空对象

2、会触发类中__init__函数的运行,将空对象连同括号内的参数一同传入

stu1 = OldBoySchool2("jack", 18, "male")
stu2 = OldBoySchool2("tom", 19, "female")

对象名称空间中存在自己独有的属性

print(stu1.__dict__)  # {‘name‘: ‘jack‘, ‘age‘: 18, ‘sex‘: ‘male‘}
print(stu2.__dict__)  # {‘name‘: ‘tom‘, ‘age‘: 19, ‘sex‘: ‘female‘}

 先从自己的名称空间中找,再去类的名称空间中去找

print(stu1.name) #自己的名称空间
print(stu1.school) #类的名称空间

 类的数据属性是共享给所有对象用,大家的内存地址都一样

print(id(stu1.school))
print(id(OldBoySchool2.school))

相当于stu1添加了一个school属性,不影响类的属性

stu1.school = xxx

 类中定义的函数是绑定给对象用的,称之为绑定方法

用原有的函数需要传自身对象,比较麻烦,所以用绑定方法,就不用传自身对象了

print(id(OldBoySchool2.choose_course))  # 2492997074320
print(id(stu1.choose_course))  # 2492993911944
print(id(stu2.choose_course))  # 2492993911944

 调用方法

stu1.choose_course() # jack is choosing course
stu2.choose_course() # tom is choosing course

 

面向对象举例:

class Mysql:
    def __init__(self, host, port, db, charset):
        self.host = host
        self.port = port
        self.db = db
        self.charset = charset

    def exc1(self, sql):
        conn = connect(self.host, self.port, self.db, self.charset)
        conn.execute(sql)
        return XXX

    def exc2(self, proc_name):
        conn = connect(self.host, self.port, self.db, self.charset)
        conn.call_proc(proc_name)
        return XXX

obj=Mysql(1.1.1.1,3306,db1,utf-8)
obj.exc1(select * froom xxx)
obj.exc2(p1)

 






python学习7_1面向对象基本概念和用法

标签:变量   elf   运行   存在   oom   style   python   xxx   对象   

原文地址:https://www.cnblogs.com/cooky/p/9478796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!