#在Java中,所有的最终父类都是Object
#在python中也是,一个类没有直接的父类就写入object
class Animal(object):
#在python中init方法相当于构造器
#参数列表中,第一个位置是第一个默认的叫做self.也就是实例本身,相当于java的this
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def running(self):
print("我是" + self.name + "我在跑....")
#主函数如此定义
if __name__ == '__main__':
#创建实例
animal = Animal("旺财",3,"公")
animal.running()
运行的结果是:
我是旺财我在跑….
#在Java中,所有的最终父类都是Object
#在python中也是,一个类没有直接的父类就写入object
class Animal(object):
#在python中init方法相当于构造器
#参数列表中,第一个位置是第一个默认的叫做self.也就是实例本身,相当于java的this
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def running(self):
print("我是" + self.name + "我在跑....")
#继承一个类时,将类名放在括号中
class Dog(Animal):
pass
#主函数如此定义
if __name__ == '__main__':
#创建实例
animal = Dog("旺财",3,"公")
animal.running()
多态1:在python中,多态是伪多态,方法在定义中需要一个父类的参数,而实际传入是可以传入一个子类。
比如说明(Java工程师)
可以是:(Java Web工程师)
(java游戏开发工程师)
后面两者相当于是前者的子类。就是多态的一种现象。
#在Java中,所有的最终父类都是Object
#在python中也是,一个类没有直接的父类就写入object
class Animal(object):
#在python中init方法相当于构造器
#参数列表中,第一个位置是第一个默认的叫做self.也就是实例本身,相当于java的this
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def running(self):
print("我是" + self.name + "我在跑....")
#继承一个类时,将类名放在括号中
class Dog(Animal):
pass
class Person(object):
#打印一个方法
def printAnimal(self,animal):
#调用方法
animal.running()
#主函数如此定义
if __name__ == '__main__':
#创建实例
dog = Dog("旺财",3,"公")
dog.running()
person = Person()
person.printAnimal(dog)
上面的的Person部分就是就是多态的一种表现。
多态2:多态的鸭子类型
上面person.printAnimal(dog),传入的dog没有被严格检查。只要在传入的变量中同样含有一个running()的方法。这样话,就可以被调用执行。
具体说明:
方法需要一个animal,然后在方法调用animal的某个方法。
如果用户传入的对象不是animal的子类,但是也有对应的方法也行。
鸭子类型的测试:
#在Java中,所有的最终父类都是Object
#在python中也是,一个类没有直接的父类就写入object
class Animal(object):
#在python中init方法相当于构造器
#参数列表中,第一个位置是第一个默认的叫做self.也就是实例本身,相当于java的this
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def running(self):
print("我是" + self.name + "我在跑....")
#继承一个类时,将类名放在括号中
class Dog(Animal):
pass
class Person(object):
#打印一个方法
def printAnimal(self,animal):
#调用方法
animal.running()
class A:
def running(self):
print("我是a......")
#主函数如此定义
if __name__ == '__main__':
#创建实例
dog = Dog("旺财",3,"公")
dog.running()
person = Person()
person.printAnimal(dog)
#鸭子类型测试
a = A()
a.running()
person.printAnimal(a)
1、如何获取一个变量的类型
Type()
通过type,可以获得是整型,是方法,还是类
2、如何比较一个变量的类型
查看是否是某种类型:
type(a)
type(person)
#比较一个类型是否是int
r = isinstance(a,int)
print(r)
r = isinstance(a,str)
print(r)
4、如果查看一个类有多少属性
#主函数如此定义
if __name__ == '__main__':
animal = Animal("a","2","sex")
#通过getattr方法拿animal对象中对应的age的属性值
r = getattr(animal,"age","默认值")
print(r)
再如:
sex = getattr(animal,"sex","Ren")
if sex == "Ren":
setattr(animal,"sex","animal")
if hasattr(animal,"sex"):
if getattr(animal,"sex") == "animal":
print("终于不是人了")