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())

浙公网安备 33010602011771号