类(class)和对象(Instance objects)-python初尝试

#类(class)和对象(Instance objects)
一、对象:对象来源于模拟真实世界,把代码和数据都封装在一起(封装的思想)
1、对象=属性+方法
 一个对象的特征叫做属性,对象的行为叫做方法
# class
#  python中类名约定以大写字母开头
# 特征的描述称为对象,在代码层面看来就是变量
class Turtle:
    color = 'green'
    weight = 10
    leg = 4
    shell = True
    mouth = '大嘴'
# 方法实际就是函数,通过调用函数来完成某些工作,函数名用小写更容易区分
    def climb(self):
        print('我正在努力的爬')
    def run(self):
        print('飞快的跑')
    def bite(self):
        print('咬你')
    def eat(self):
        print('有好吃的')
    def sleep(self):
        print('吃饱了,我想睡了')
#上面的还不是完整的对象,称为类,需要使用类来创建真正的对象,也叫作类的实例化
#instance objects
#运行类
tt = Turtle()#类名后面跟着小括号,类似于函数调用
tt.climb()
print(tt.color)
tt.run()
>>>
我正在努力的爬
green
飞快的跑


二、面对对象编程
1、对象方法中的self参数:python中没有指针,self类似于c++中的this指针
# class
class Ball:
    def setName(self, name):
        self.name = name
    def kick(self):
        print("我叫%s,哦,hello!" % self.name)
a = Ball()
a.setName("飞火")
b = Ball()
b.setName("心")
a.kick()
b.kick()
>>>
我叫飞火,哦,hello!
我叫心,哦,hello!
2、python中的魔法方法
1)、__int__()-构造方法,只要实例化一个对象,这个方法就会在被创建时自动调用
2)、共有和私有(public和private)
 python中没有类似c++/java的关键字,默认对象的属性和方法是公开的,python的内部采用的一种叫name mangling(名字改编)的技术,python定义私有变量只需要在函数名或变量前加_ _两个下划线,这样就在外部讲变量隐藏起来,实际上在外部想使用私有变量,"_类名__变量名"就可访问双下划线开头的私有变量
3)继承: 相似的东西自动传递,避免重复定义的机制
语法:class 类名(被继承的类)
 ...
被继承的类称为基类、父类或超类,继承者称为子类,一个子类可以继承父类的所有属性和方法
# class_继承
class Parent:
    def hello(self):
        print("正在调用父类的方法...")
class Child(Parent):
    pass      ##占位用的啥也不做
p = Parent()
p.hello()
c = Child()
c.hello()
>>>
正在调用父类的方法...
正在调用父类的方法...
***如果子类中定义与父类同名的方法和函数,会自动覆盖父类对的的方法和属性***
4)调用未绑定父类方法
class C(父类):
 def _ _init_ _(self)
       父类._ _init_ _(self)
       self.k = ....
在重写_ _init_ _方法是先调用父类的 _ _init_ _方法,self不是父类的的实例对象,是子类的实例对象,即未绑定是指并不需要绑定父类的实例对象,只用子类的代替
5)super函数:super函数自动找到基类,并且传入self参数
6)python支持多重继承,可以同时继承多个父类的属性和方法
7)组合:直接把需要的类放进去实例化
# class
class Turtle:
    def __init__(self, x):
        self.num = x
class Fish:
    def __init__(self, x):
        self.num = x
class Pool:
    def __init__(self, x, y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)
    def print_num(self):
            print("Toutals : turtle: %d, fish: %d!"%(self.turtle.num, self.fish.num))
pool = Pool(1, 10)
pool.print_num()
8)命名的一些约定俗成的规矩:
a.类的定义,不要试图定义完所以能想到的特性和方法,多利用继承和组合机制来拓展类
b.用不同的词性命名,属性用名词,方法用动词,并使用驼峰法命名
发布了24 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Wutongyewan/article/details/79308664