标签:demo get 面向对象 没有 字符串 ini 细节 调用 布尔
https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/2262089?fr=aladdin
class 类名(object):
object是继承的类,每个类默认都继承object# 创建类 class People(object): pass
实例名 = 类()
# 实例化类 man = People()
__init__
:初始化类模版,使在初始化时候就能得到属性的值class Student(object): def __init__(self,name,age): # self 这个值不用传 self.name = name # 属性 self.age = age bart = Student(‘小军‘,‘15‘) # 调用实例属性 print(bart.name,bart.age)
class Animal(object): # 属性(变量) name = ‘xx‘ # 方法 def run(self): return self.name + ‘会跑‘ monkey = Animal() print(monkey.run())
代码:
class School(object):
def __init__(self,name,addr)
self.name = name
self.addr = addr
# 定义一个方法 直接拿到属性
def getProperty(self):
return self.name,self.addr
# 实例类
school = School('mslg','America')
sName,sAddr = school.getProperty()
print(sName,sAddr)
class Man(object): def __init__(self,name,age): self.__name = name self.__age = age def printNameAge(self): print(self.__name,self.__age) m = Man(‘a‘,‘12‘) print(m.__name) # 无法访问
代码:
```
class Student(object):
def init(self, name, gender):
self.name = name
self.__gender = gender # 私有属性
def set_gender(self,gender): # 设置私有属性的值,并进行参数校验
if gender in [‘male‘,‘female‘]:
self.__gender = gender
else:
raise ValueError(‘gender is male or female‘)
def get_gender(self): # 得到私有属性值的方法
return self.__gender
# 定义一个Dog类继承Animal类 class Dog(Animal): pass # 继承之后就拥有了父类非私有方法和属性 d = Dog() print(d.run()) # 调用父类的run方法
# 定义一个Cat类继承Animal类 class Cat(Animal): name = ‘dog‘ def run(self): return self.name + ‘会跑‘ c = Cat() c.run # 调用的是Cat的run方法 print(c.run())
代码:
```
# class 也是数据类型
isinstance(c,Animal)
isinstance(c,Cat)
print(isinstance(c,Animal),isinstance(c,Cat)) # Cat的实例是Cat数据类型,也是Animal数据类型
isinstance(monkey,Dog)
print(isinstance(monkey,Cat)) # Animal的实例不是Cat数据类型
# 定义一个方法传入Animal类型
def do_run(Animal):
print(Animal.run())
# types import types def fn(): pass type(fn) == types.FunctionType # 返回True
代码:
```
print(dir(‘123‘))
print(dir(Anmial()))
代码:
```
# getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态:
class Demo(object):
name = ‘xxx123‘
age = 12
def eat(self):
print("eat!!!")
demo = Demo()
# hasattr(对象,属性) 检查对象是否有属性,返回布尔值
hasattr(demo,‘name‘) # 有属性 name嘛? True
# setattr(对象,属性名,值) 设置一个属性
setattr(demo,‘addr‘,‘beijin‘)
print(demo.addr) # 获取属性
# getattr(对象,属性) 获取属性的值
getattr(demo,‘addr‘)
# 实例属性与类属性 class Test(object): name = ‘Test.class‘ # 类属性,作用与类中,对象可以随意访问 def __init__(self,age): self.age = age # 实例属性 t = Test(12) t.addr = ‘123‘ # 实例属性 print(t.name) # 因为实例并没有name属性,所以会继续查找class的name属性 print(Test.name) t.name = ‘123.t‘ # 给t设置实例属性name print(t.name) # 123.t 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性 print(Test.name) # Test.class del t.name # 删除实例属性 print(t.name) # Test.class
标签:demo get 面向对象 没有 字符串 ini 细节 调用 布尔
原文地址:https://www.cnblogs.com/thloveyl/p/11440256.html