1.访问限制
练习1
class Student(object): def __init__(self, name, gender): self.__name = name self.__gender = gender def get_gender(self): return self.__gender print(‘%s‘ %self.__gender) def set_gender(self,gender): if gender == ‘male‘ or gender == ‘female‘: self.__gender = gender else: raise ValueError(‘Please set a correct gender!‘) bart = Student(‘Bart‘, ‘male‘) print(bart.get_gender()) bart.set_gender(‘female‘) print(bart.get_gender())
(题外话)python 里的与或非:
一般格式为:a & b a | b a and b a or b
如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出
例如:
1 & 2 # 输出为 0, 1 | 2 # 输出为3 (# 1&2,2在二进制里面是10,1在二进制中是01,那么01与运算10得到是0)
2 and 0 # 返回0 , 2 and 1 # 返回1
2.继承与多态
3.获取对象信息
type()函数:
type(123) , type(abs) , type(‘ABC‘)
isinstance()函数
isinstance(‘a‘, str) , isinstance(123, int) , Isinstance([1,2,3,4,5], tuple)
dir() 函数
如果要获得一个对象的所有属性和方法,可以使用dir()
函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:
dir(‘ABC‘)
[‘__add__‘, ‘__class__‘,..., ‘__subclasshook__‘, ‘capitalize‘, ‘casefold‘,..., ‘zfill‘]
getattr() , setattr() , hasattr()
如:hasattr(obj, ‘x‘)
setattr(obj, ‘name‘, 19)
getattr(obj, ‘y‘)
练习2:为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加
class Student(object): count = 0 def __init__(self, name): self.name = name Student.count += 1 Bart = Student(‘Bart‘) print(Bart.count) lisa = Student(‘lisa‘) print(lisa.count)
>>>1 >>>2
原文:https://www.cnblogs.com/stacy828/p/10840171.html
实例属性属于各个实例所有,互不干扰;
类属性属于类所有,所有实例共享一个属性;