python 入坑路--类的特性讲解

一、概述

上回说到了 类的1、创建  class Dog(object):   Dog 一般创建类 第一个字母大写。

2、类实例化,d=Dog("niubi")

3、__init__构造函数,初始化函数

4、self 代表什么?实例自己。

5、def walk(self) ,类的方法,动态属性。

二、访问类的属性

class Dog(object):
    '''
    dog class
    '''
    def __init__(self,name):
        self.name=name

    def walk(self):
        print("%s is walking..." %self.name)


    def eat(self,food):
        print("%s is eating %s" %(self.name,food))

d=Dog("NIUBI")
d.walk()
d.eat("肉包子")

  在上面的例子中,self.name 是成员属性,普通字段,所有方法都能调用。

而 food 是 eat 方法的参数,类动其它方法不能访问。

2、修改成员变量

class Dog(object):
    '''
    dog class
    '''
    def __init__(self,name):
        self.name=name
        self.age=None

    def walk(self):
        print("%s is walking..." %self.name)


    def eat(self,food):
        print("%s is eating %s" %(self.name,food))

    def age(self,age):
        self.age=age

d=Dog("NIUBI")
d.walk()
d.eat("肉包子")
print(d.age)
d.age=2
print(d.age)


d1=Dog("1")
print(d1.age)  #实例 d1 打印出来的age 还是 None ,因为实例化后,修改的变量,就存储在实例的内存空间中
#输出结果

NIUBI is walking...
NIUBI is eating 肉包子
None
2
None

  

3、定义私有属性

 1.语法: self.__sex=sex , 变量名前加__  ,无法修改

2.访问方法:a.通过在类中定义方法,return , b.强制访问 d._Dog__sex , 可以强制修改 d._Dog__sex ="M"

class Dog(object):
    '''
    dog class
    '''
    def __init__(self,name):
        self.name=name
        self.age=None
        self.__sex=None

    def walk(self):
        print("%s is walking..." %self.name)


    def eat(self,food):
        print("%s is eating %s" %(self.name,food))

    def age(self,age):
        self.age=age

    def sex(self):
        return self.__sex

d=Dog("NIUBI")
# d.walk()
# d.eat("肉包子")
# print(d.age)
# d.age=2
# print(d.age)
print(d.sex()) #通过类中定义的方法访问

print(d._Dog__sex) #强制访问
d._Dog__sex="M"  #强制修改
print(d.sex())

  

posted @ 2018-02-01 10:13  东郭仔  阅读(136)  评论(0)    收藏  举报