标签:asd 对象 rgs 面向 core 就是 pytho 重要 没有
类,面向对象一个很重要的载体。类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
class Student(object): pass
class Student(object): name = "yangjian" def hello(self): print("my name is {0}".format(self.name))
class Student(object): name = "yangjian" def hello(self): print("my name is {0}".format(self.name)) student = Student() 结果: hello yangjian
class Student(object): def __init__(self,name,score): self.name = name self.score = score student = Student("yangjian",90)
class A(object): def __init__(self,name): self.name = name print("init calss A") def hello(self): print("hello {0}".format(self.name)) a = A("yangjian") a.hello() # 结果 init calss A # 初始化的时候执行的 hello yangjian
class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print(‘%s: %s‘ % (self.name, self.score)) student = Student("yangjian",90) student.print_score() 结果: yangjian:90
class Animal(object): def __init__(self): print("你现在正在初始化一个Animal") def run(self): print("Animal can run.") class Bird(Animal): def fly(self): print("Bird can fly.") class Cat(Animal): def jiao(self): print("miao miao miao.") #animal = Animal() cat = Cat() # 结果 你现在正在初始化一个Animal
在上面这个例子中,在实例化Cat这个类的时候,Cat类继承了Animal这个类,所以Cat类会拥有Animal类的所有属性和方法,所以出现的结果是Animal类里面的初始化函数的内容。
重写
在子类中,对父类中的发放进行重写。
class Animal(object): def __init__(self): print("你现在正在初始化一个Animal.") def run(self): print("Animal can run.") class Bird(Animal): def fly(self): print("Bird can fly.") class Cat(Animal): def __init__(self): print("我是一只猫.") def jiao(self): print("miao miao miao.") animal = Animal() cat = Cat() # 结果 你现在正在初始化一个Animal 我是一只猫.
上面这个例子,实例化Cat的时候,先去子类Cat类里面去找初始化函数,找到了就是用Cat类自己的初始化函数,如果Cat类里面没有定义初始化函数,就去父类里面去找。父类中有一个初始化函数和一个run方法,子类对继承自父类的方法进行了重写,于是就有了自己的初始化方法和一个jiao方法。
class Animal(object): def __init__(self): print("你现在正在初始化一个Animal") def run(self): print("Animal can run.") class Bird(Animal): def __init__(self): print("我是一只鸟.") def fly(self): print("Bird can fly.") class Cat(Animal): def __init__(self): print("我是一只猫.") def jiao(self): print("miao miao miao.") class Bianyi(Bird,Cat): # 多继承,如果父类中都有该方法,那么先继承谁就用谁的方法,即Bird写在前面就先继承Bird pass animal = Animal() cat = Cat() binyi = Bianyi() # 结果 你现在正在初始化一个Animal 我是一只猫. 我是一只鸟.
class DbArgs(object): # 只有类本身才可以调用 __host = str("1.1.1.1") __port = str() __username = str() __password = str() __dbname = str() # 任何人可以调用 name = "ajing" # 只能实例自己调用 _host = "asdlfjasdl" def getHost(self): return self.__host def setHost(self, host): self.__host = host dbArgs = DbArgs() print(dbArgs.getHost()) # 类调用getHost()方法 dbArgs.name = "就是要改你,怎么的" # 这个name不是私有变量,谁都可以调用 print(dbArgs.name) print(dbArgs._host) # 实例直接调用 结果: 1.1.1.1 就是要改你,怎么的 asdlfjasdl
练习
把之前的求阶乘封装成类
class JinCinCount(object): def __init__(self, n): self.n = n def jc(self, n): result = 1 if n == 0: return result else: for i in range(1, n+1): result *= i return result def count(self): count = 0 for i in range(0, int(self.n) + 1): count += self.jc(i) print("count = {0}".format(count)) def main(): n = input("Please inpurt a number: ") # 实例化类 jinCinCount = JinCinCount(int(n)) # 调用类方法 jinCinCount.count() if __name__ == "__main__": main()
标签:asd 对象 rgs 面向 core 就是 pytho 重要 没有
原文地址:https://www.cnblogs.com/yangjian319/p/8893551.html