[{"data":1,"prerenderedAt":2677},["ShallowReactive",2],{"doc-\u002Fhow-to\u002Fhow-to-inherit-from-a-class-in-python":3},{"id":4,"title":5,"body":6,"description":2670,"extension":2671,"meta":2672,"navigation":109,"path":2673,"seo":2674,"stem":2675,"__hash__":2676},"content\u002Fhow-to\u002Fhow-to-inherit-from-a-class-in-python.md","How to Inherit from a Class in Python",{"type":7,"value":8,"toc":2633},"minimark",[9,13,17,20,34,39,174,180,189,192,196,199,215,219,222,225,242,245,330,350,357,361,364,382,473,477,493,496,513,522,529,533,536,539,664,668,688,691,717,724,728,731,737,870,874,888,891,894,902,909,914,921,1106,1110,1125,1131,1146,1159,1165,1168,1183,1445,1449,1475,1478,1502,1506,1509,1520,1523,1545,1548,1552,1555,1560,1567,1618,1628,1631,1652,1661,1664,1785,1791,1794,1955,1959,1962,2036,2045,2049,2052,2062,2066,2069,2073,2158,2162,2181,2184,2188,2336,2339,2383,2390,2432,2444,2448,2451,2530,2533,2547,2551,2555,2558,2565,2571,2575,2578,2582,2585,2589,2592,2596,2629],[10,11,5],"h1",{"id":12},"how-to-inherit-from-a-class-in-python",[14,15,16],"p",{},"Inheritance lets you create a new class from an existing class.",[14,18,19],{},"This is useful when two classes should share code. The new class can reuse methods and attributes from the existing class, and it can also add new behavior or replace old behavior when needed.",[14,21,22,23,28,29,33],{},"If you are new to classes, it may help to first read ",[24,25,27],"a",{"href":26},"\u002Fhow-to\u002Fhow-to-create-a-class-in-python\u002F","how to create a class in Python"," and ",[24,30,32],{"href":31},"\u002Flearn\u002Fpython-classes-and-objects-explained","Python classes and objects explained",".",[35,36,38],"h2",{"id":37},"quick-answer","Quick answer",[40,41,46],"pre",{"className":42,"code":43,"language":44,"meta":45,"style":45},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    pass\n\npet = Dog()\nprint(pet.speak())\n","python","",[47,48,49,66,86,104,111,126,132,137,154],"code",{"__ignoreMap":45},[50,51,54,58,62],"span",{"class":52,"line":53},"line",1,[50,55,57],{"class":56},"sbsja","class",[50,59,61],{"class":60},"sbgvK"," Animal",[50,63,65],{"class":64},"sP7_E",":\n",[50,67,69,72,76,79,83],{"class":52,"line":68},2,[50,70,71],{"class":56},"    def",[50,73,75],{"class":74},"sGLFI"," speak",[50,77,78],{"class":64},"(",[50,80,82],{"class":81},"smCYv","self",[50,84,85],{"class":64},"):\n",[50,87,89,93,97,101],{"class":52,"line":88},3,[50,90,92],{"class":91},"sVHd0","        return",[50,94,96],{"class":95},"sjJ54"," \"",[50,98,100],{"class":99},"s_sjI","Some sound",[50,102,103],{"class":95},"\"\n",[50,105,107],{"class":52,"line":106},4,[50,108,110],{"emptyLinePlaceholder":109},true,"\n",[50,112,114,116,119,121,124],{"class":52,"line":113},5,[50,115,57],{"class":56},[50,117,118],{"class":60}," Dog",[50,120,78],{"class":64},[50,122,123],{"class":60},"Animal",[50,125,85],{"class":64},[50,127,129],{"class":52,"line":128},6,[50,130,131],{"class":91},"    pass\n",[50,133,135],{"class":52,"line":134},7,[50,136,110],{"emptyLinePlaceholder":109},[50,138,140,144,148,151],{"class":52,"line":139},8,[50,141,143],{"class":142},"su5hD","pet ",[50,145,147],{"class":146},"smGrS","=",[50,149,118],{"class":150},"slqww",[50,152,153],{"class":64},"()\n",[50,155,157,161,163,166,168,171],{"class":52,"line":156},9,[50,158,160],{"class":159},"sptTA","print",[50,162,78],{"class":64},[50,164,165],{"class":150},"pet",[50,167,33],{"class":64},[50,169,170],{"class":150},"speak",[50,172,173],{"class":64},"())\n",[14,175,176],{},[177,178,179],"strong",{},"Output:",[40,181,183],{"className":42,"code":182,"language":44,"meta":45,"style":45},"Some sound\n",[47,184,185],{"__ignoreMap":45},[50,186,187],{"class":52,"line":53},[50,188,182],{"class":142},[14,190,191],{},"Put the parent class name inside parentheses after the child class name. The child class then gets the parent class methods.",[35,193,195],{"id":194},"what-this-page-helps-you-do","What this page helps you do",[14,197,198],{},"After reading this page, you will be able to:",[200,201,202,206,209,212],"ul",{},[203,204,205],"li",{},"Create a class that inherits from another class",[203,207,208],{},"Reuse methods and attributes from a parent class",[203,210,211],{},"Understand parent class and child class in simple terms",[203,213,214],{},"Know when to add new behavior or replace inherited behavior",[35,216,218],{"id":217},"what-inheritance-means","What inheritance means",[14,220,221],{},"Inheritance lets one class use code from another class.",[14,223,224],{},"In simple terms:",[200,226,227,233,239],{},[203,228,229,230],{},"The existing class is the ",[177,231,232],{},"parent class",[203,234,235,236],{},"The new class is the ",[177,237,238],{},"child class",[203,240,241],{},"The child class can use parent methods without rewriting them",[14,243,244],{},"Here is a simple example:",[40,246,248],{"className":42,"code":247,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    pass\n\ndog = Dog()\nprint(dog.speak())\n",[47,249,250,258,270,280,284,296,300,304,315],{"__ignoreMap":45},[50,251,252,254,256],{"class":52,"line":53},[50,253,57],{"class":56},[50,255,61],{"class":60},[50,257,65],{"class":64},[50,259,260,262,264,266,268],{"class":52,"line":68},[50,261,71],{"class":56},[50,263,75],{"class":74},[50,265,78],{"class":64},[50,267,82],{"class":81},[50,269,85],{"class":64},[50,271,272,274,276,278],{"class":52,"line":88},[50,273,92],{"class":91},[50,275,96],{"class":95},[50,277,100],{"class":99},[50,279,103],{"class":95},[50,281,282],{"class":52,"line":106},[50,283,110],{"emptyLinePlaceholder":109},[50,285,286,288,290,292,294],{"class":52,"line":113},[50,287,57],{"class":56},[50,289,118],{"class":60},[50,291,78],{"class":64},[50,293,123],{"class":60},[50,295,85],{"class":64},[50,297,298],{"class":52,"line":128},[50,299,131],{"class":91},[50,301,302],{"class":52,"line":134},[50,303,110],{"emptyLinePlaceholder":109},[50,305,306,309,311,313],{"class":52,"line":139},[50,307,308],{"class":142},"dog ",[50,310,147],{"class":146},[50,312,118],{"class":150},[50,314,153],{"class":64},[50,316,317,319,321,324,326,328],{"class":52,"line":156},[50,318,160],{"class":159},[50,320,78],{"class":64},[50,322,323],{"class":150},"dog",[50,325,33],{"class":64},[50,327,170],{"class":150},[50,329,173],{"class":64},[14,331,332,335,336,338,339,342,343,345,346,349],{},[47,333,334],{},"Dog"," inherits from ",[47,337,123],{},", so ",[47,340,341],{},"dog.speak()"," works even though ",[47,344,334],{}," does not define its own ",[47,347,348],{},"speak()"," method.",[14,351,352,353,33],{},"If you want a simple definition, see ",[24,354,356],{"href":355},"\u002Fglossary\u002Fwhat-is-inheritance-in-python","what inheritance means in Python",[35,358,360],{"id":359},"basic-inheritance-syntax","Basic inheritance syntax",[14,362,363],{},"To make one class inherit from another:",[200,365,366,369,372,379],{},[203,367,368],{},"Write the child class name first",[203,370,371],{},"Put the parent class name in parentheses",[203,373,374,375,378],{},"Use ",[47,376,377],{},"pass"," if the child class does not add anything yet",[203,380,381],{},"Create an object from the child class and call inherited methods",[40,383,385],{"className":42,"code":384,"language":44,"meta":45,"style":45},"class Parent:\n    def greet(self):\n        return \"Hello from Parent\"\n\nclass Child(Parent):\n    pass\n\nobj = Child()\nprint(obj.greet())\n",[47,386,387,396,409,420,424,438,442,446,457],{"__ignoreMap":45},[50,388,389,391,394],{"class":52,"line":53},[50,390,57],{"class":56},[50,392,393],{"class":60}," Parent",[50,395,65],{"class":64},[50,397,398,400,403,405,407],{"class":52,"line":68},[50,399,71],{"class":56},[50,401,402],{"class":74}," greet",[50,404,78],{"class":64},[50,406,82],{"class":81},[50,408,85],{"class":64},[50,410,411,413,415,418],{"class":52,"line":88},[50,412,92],{"class":91},[50,414,96],{"class":95},[50,416,417],{"class":99},"Hello from Parent",[50,419,103],{"class":95},[50,421,422],{"class":52,"line":106},[50,423,110],{"emptyLinePlaceholder":109},[50,425,426,428,431,433,436],{"class":52,"line":113},[50,427,57],{"class":56},[50,429,430],{"class":60}," Child",[50,432,78],{"class":64},[50,434,435],{"class":60},"Parent",[50,437,85],{"class":64},[50,439,440],{"class":52,"line":128},[50,441,131],{"class":91},[50,443,444],{"class":52,"line":134},[50,445,110],{"emptyLinePlaceholder":109},[50,447,448,451,453,455],{"class":52,"line":139},[50,449,450],{"class":142},"obj ",[50,452,147],{"class":146},[50,454,430],{"class":150},[50,456,153],{"class":64},[50,458,459,461,463,466,468,471],{"class":52,"line":156},[50,460,160],{"class":159},[50,462,78],{"class":64},[50,464,465],{"class":150},"obj",[50,467,33],{"class":64},[50,469,470],{"class":150},"greet",[50,472,173],{"class":64},[14,474,475],{},[177,476,179],{},[40,478,480],{"className":42,"code":479,"language":44,"meta":45,"style":45},"Hello from Parent\n",[47,481,482],{"__ignoreMap":45},[50,483,484,487,490],{"class":52,"line":53},[50,485,486],{"class":142},"Hello ",[50,488,489],{"class":91},"from",[50,491,492],{"class":142}," Parent\n",[14,494,495],{},"The important line is:",[40,497,499],{"className":42,"code":498,"language":44,"meta":45,"style":45},"class Child(Parent):\n",[47,500,501],{"__ignoreMap":45},[50,502,503,505,507,509,511],{"class":52,"line":53},[50,504,57],{"class":56},[50,506,430],{"class":60},[50,508,78],{"class":64},[50,510,435],{"class":60},[50,512,85],{"class":64},[14,514,515,516,519,520,33],{},"That tells Python that ",[47,517,518],{},"Child"," should inherit from ",[47,521,435],{},[14,523,524,525,33],{},"If you need a refresher on making instances, see ",[24,526,528],{"href":527},"\u002Fhow-to\u002Fhow-to-create-an-object-in-python\u002F","how to create an object in Python",[35,530,532],{"id":531},"add-new-methods-in-the-child-class","Add new methods in the child class",[14,534,535],{},"A child class can keep parent methods and also add its own methods.",[14,537,538],{},"Use this when the child needs extra behavior.",[40,540,542],{"className":42,"code":541,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    def wag_tail(self):\n        return \"Tail is wagging\"\n\ndog = Dog()\n\nprint(dog.speak())\nprint(dog.wag_tail())\n",[47,543,544,552,564,574,578,590,603,614,618,628,633,648],{"__ignoreMap":45},[50,545,546,548,550],{"class":52,"line":53},[50,547,57],{"class":56},[50,549,61],{"class":60},[50,551,65],{"class":64},[50,553,554,556,558,560,562],{"class":52,"line":68},[50,555,71],{"class":56},[50,557,75],{"class":74},[50,559,78],{"class":64},[50,561,82],{"class":81},[50,563,85],{"class":64},[50,565,566,568,570,572],{"class":52,"line":88},[50,567,92],{"class":91},[50,569,96],{"class":95},[50,571,100],{"class":99},[50,573,103],{"class":95},[50,575,576],{"class":52,"line":106},[50,577,110],{"emptyLinePlaceholder":109},[50,579,580,582,584,586,588],{"class":52,"line":113},[50,581,57],{"class":56},[50,583,118],{"class":60},[50,585,78],{"class":64},[50,587,123],{"class":60},[50,589,85],{"class":64},[50,591,592,594,597,599,601],{"class":52,"line":128},[50,593,71],{"class":56},[50,595,596],{"class":74}," wag_tail",[50,598,78],{"class":64},[50,600,82],{"class":81},[50,602,85],{"class":64},[50,604,605,607,609,612],{"class":52,"line":134},[50,606,92],{"class":91},[50,608,96],{"class":95},[50,610,611],{"class":99},"Tail is wagging",[50,613,103],{"class":95},[50,615,616],{"class":52,"line":139},[50,617,110],{"emptyLinePlaceholder":109},[50,619,620,622,624,626],{"class":52,"line":156},[50,621,308],{"class":142},[50,623,147],{"class":146},[50,625,118],{"class":150},[50,627,153],{"class":64},[50,629,631],{"class":52,"line":630},10,[50,632,110],{"emptyLinePlaceholder":109},[50,634,636,638,640,642,644,646],{"class":52,"line":635},11,[50,637,160],{"class":159},[50,639,78],{"class":64},[50,641,323],{"class":150},[50,643,33],{"class":64},[50,645,170],{"class":150},[50,647,173],{"class":64},[50,649,651,653,655,657,659,662],{"class":52,"line":650},12,[50,652,160],{"class":159},[50,654,78],{"class":64},[50,656,323],{"class":150},[50,658,33],{"class":64},[50,660,661],{"class":150},"wag_tail",[50,663,173],{"class":64},[14,665,666],{},[177,667,179],{},[40,669,671],{"className":42,"code":670,"language":44,"meta":45,"style":45},"Some sound\nTail is wagging\n",[47,672,673,677],{"__ignoreMap":45},[50,674,675],{"class":52,"line":53},[50,676,182],{"class":142},[50,678,679,682,685],{"class":52,"line":68},[50,680,681],{"class":142},"Tail ",[50,683,684],{"class":146},"is",[50,686,687],{"class":142}," wagging\n",[14,689,690],{},"What happens here:",[200,692,693,703,711],{},[203,694,695,697,698,700,701],{},[47,696,334],{}," inherits ",[47,699,348],{}," from ",[47,702,123],{},[203,704,705,707,708],{},[47,706,334],{}," adds a new method called ",[47,709,710],{},"wag_tail()",[203,712,713,714,716],{},"A ",[47,715,334],{}," object can use both methods",[14,718,719,720,33],{},"If you want more practice writing methods, see ",[24,721,723],{"href":722},"\u002Fhow-to\u002Fhow-to-add-methods-to-a-class-in-python\u002F","how to add methods to a class in Python",[35,725,727],{"id":726},"override-a-parent-method","Override a parent method",[14,729,730],{},"Sometimes the child class should behave differently from the parent class.",[14,732,733,734,33],{},"To do that, write a method in the child class with the same name. This is called ",[177,735,736],{},"overriding",[40,738,740],{"className":42,"code":739,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    def speak(self):\n        return \"Woof\"\n\nanimal = Animal()\ndog = Dog()\n\nprint(animal.speak())\nprint(dog.speak())\n",[47,741,742,750,762,772,776,788,800,811,815,826,836,840,855],{"__ignoreMap":45},[50,743,744,746,748],{"class":52,"line":53},[50,745,57],{"class":56},[50,747,61],{"class":60},[50,749,65],{"class":64},[50,751,752,754,756,758,760],{"class":52,"line":68},[50,753,71],{"class":56},[50,755,75],{"class":74},[50,757,78],{"class":64},[50,759,82],{"class":81},[50,761,85],{"class":64},[50,763,764,766,768,770],{"class":52,"line":88},[50,765,92],{"class":91},[50,767,96],{"class":95},[50,769,100],{"class":99},[50,771,103],{"class":95},[50,773,774],{"class":52,"line":106},[50,775,110],{"emptyLinePlaceholder":109},[50,777,778,780,782,784,786],{"class":52,"line":113},[50,779,57],{"class":56},[50,781,118],{"class":60},[50,783,78],{"class":64},[50,785,123],{"class":60},[50,787,85],{"class":64},[50,789,790,792,794,796,798],{"class":52,"line":128},[50,791,71],{"class":56},[50,793,75],{"class":74},[50,795,78],{"class":64},[50,797,82],{"class":81},[50,799,85],{"class":64},[50,801,802,804,806,809],{"class":52,"line":134},[50,803,92],{"class":91},[50,805,96],{"class":95},[50,807,808],{"class":99},"Woof",[50,810,103],{"class":95},[50,812,813],{"class":52,"line":139},[50,814,110],{"emptyLinePlaceholder":109},[50,816,817,820,822,824],{"class":52,"line":156},[50,818,819],{"class":142},"animal ",[50,821,147],{"class":146},[50,823,61],{"class":150},[50,825,153],{"class":64},[50,827,828,830,832,834],{"class":52,"line":630},[50,829,308],{"class":142},[50,831,147],{"class":146},[50,833,118],{"class":150},[50,835,153],{"class":64},[50,837,838],{"class":52,"line":635},[50,839,110],{"emptyLinePlaceholder":109},[50,841,842,844,846,849,851,853],{"class":52,"line":650},[50,843,160],{"class":159},[50,845,78],{"class":64},[50,847,848],{"class":150},"animal",[50,850,33],{"class":64},[50,852,170],{"class":150},[50,854,173],{"class":64},[50,856,858,860,862,864,866,868],{"class":52,"line":857},13,[50,859,160],{"class":159},[50,861,78],{"class":64},[50,863,323],{"class":150},[50,865,33],{"class":64},[50,867,170],{"class":150},[50,869,173],{"class":64},[14,871,872],{},[177,873,179],{},[40,875,877],{"className":42,"code":876,"language":44,"meta":45,"style":45},"Some sound\nWoof\n",[47,878,879,883],{"__ignoreMap":45},[50,880,881],{"class":52,"line":53},[50,882,182],{"class":142},[50,884,885],{"class":52,"line":68},[50,886,887],{"class":142},"Woof\n",[14,889,890],{},"Python uses the child version when you call that method on a child object.",[14,892,893],{},"Use overriding when:",[200,895,896,899],{},[203,897,898],{},"The parent has a general behavior",[203,900,901],{},"The child needs a more specific version",[35,903,374,905,908],{"id":904},"use-super-to-call-the-parent-version",[47,906,907],{},"super()"," to call the parent version",[14,910,911,913],{},[47,912,907],{}," lets the child class call a method from the parent class.",[14,915,916,917,920],{},"This is very common inside ",[47,918,919],{},"__init__",", where objects are set up with starting attributes.",[40,922,924],{"className":42,"code":923,"language":44,"meta":45,"style":45},"class Animal:\n    def __init__(self, name):\n        self.name = name\n\nclass Dog(Animal):\n    def __init__(self, name, breed):\n        super().__init__(name)\n        self.breed = breed\n\npet = Dog(\"Buddy\", \"Labrador\")\n\nprint(pet.name)\nprint(pet.breed)\n",[47,925,926,934,954,972,976,988,1009,1027,1041,1045,1074,1078,1092],{"__ignoreMap":45},[50,927,928,930,932],{"class":52,"line":53},[50,929,57],{"class":56},[50,931,61],{"class":60},[50,933,65],{"class":64},[50,935,936,938,941,943,945,948,952],{"class":52,"line":68},[50,937,71],{"class":56},[50,939,940],{"class":159}," __init__",[50,942,78],{"class":64},[50,944,82],{"class":81},[50,946,947],{"class":64},",",[50,949,951],{"class":950},"sFwrP"," name",[50,953,85],{"class":64},[50,955,956,960,962,966,969],{"class":52,"line":88},[50,957,959],{"class":958},"s_hVV","        self",[50,961,33],{"class":64},[50,963,965],{"class":964},"skxfh","name",[50,967,968],{"class":146}," =",[50,970,971],{"class":142}," name\n",[50,973,974],{"class":52,"line":106},[50,975,110],{"emptyLinePlaceholder":109},[50,977,978,980,982,984,986],{"class":52,"line":113},[50,979,57],{"class":56},[50,981,118],{"class":60},[50,983,78],{"class":64},[50,985,123],{"class":60},[50,987,85],{"class":64},[50,989,990,992,994,996,998,1000,1002,1004,1007],{"class":52,"line":128},[50,991,71],{"class":56},[50,993,940],{"class":159},[50,995,78],{"class":64},[50,997,82],{"class":81},[50,999,947],{"class":64},[50,1001,951],{"class":950},[50,1003,947],{"class":64},[50,1005,1006],{"class":950}," breed",[50,1008,85],{"class":64},[50,1010,1011,1015,1018,1020,1022,1024],{"class":52,"line":134},[50,1012,1014],{"class":1013},"sZMiF","        super",[50,1016,1017],{"class":64},"().",[50,1019,919],{"class":159},[50,1021,78],{"class":64},[50,1023,965],{"class":150},[50,1025,1026],{"class":64},")\n",[50,1028,1029,1031,1033,1036,1038],{"class":52,"line":139},[50,1030,959],{"class":958},[50,1032,33],{"class":64},[50,1034,1035],{"class":964},"breed",[50,1037,968],{"class":146},[50,1039,1040],{"class":142}," breed\n",[50,1042,1043],{"class":52,"line":156},[50,1044,110],{"emptyLinePlaceholder":109},[50,1046,1047,1049,1051,1053,1055,1058,1061,1063,1065,1067,1070,1072],{"class":52,"line":630},[50,1048,143],{"class":142},[50,1050,147],{"class":146},[50,1052,118],{"class":150},[50,1054,78],{"class":64},[50,1056,1057],{"class":95},"\"",[50,1059,1060],{"class":99},"Buddy",[50,1062,1057],{"class":95},[50,1064,947],{"class":64},[50,1066,96],{"class":95},[50,1068,1069],{"class":99},"Labrador",[50,1071,1057],{"class":95},[50,1073,1026],{"class":64},[50,1075,1076],{"class":52,"line":635},[50,1077,110],{"emptyLinePlaceholder":109},[50,1079,1080,1082,1084,1086,1088,1090],{"class":52,"line":650},[50,1081,160],{"class":159},[50,1083,78],{"class":64},[50,1085,165],{"class":150},[50,1087,33],{"class":64},[50,1089,965],{"class":964},[50,1091,1026],{"class":64},[50,1093,1094,1096,1098,1100,1102,1104],{"class":52,"line":857},[50,1095,160],{"class":159},[50,1097,78],{"class":64},[50,1099,165],{"class":150},[50,1101,33],{"class":64},[50,1103,1035],{"class":964},[50,1105,1026],{"class":64},[14,1107,1108],{},[177,1109,179],{},[40,1111,1113],{"className":42,"code":1112,"language":44,"meta":45,"style":45},"Buddy\nLabrador\n",[47,1114,1115,1120],{"__ignoreMap":45},[50,1116,1117],{"class":52,"line":53},[50,1118,1119],{"class":142},"Buddy\n",[50,1121,1122],{"class":52,"line":68},[50,1123,1124],{"class":142},"Labrador\n",[14,1126,1127,1128,1130],{},"Why use ",[47,1129,907],{}," here:",[200,1132,1133,1138,1141],{},[203,1134,1135,1136],{},"The parent class already knows how to set ",[47,1137,965],{},[203,1139,1140],{},"The child class does not need to repeat that code",[203,1142,1143,1144],{},"The child class can add its own extra setup, such as ",[47,1145,1035],{},[14,1147,1148,1149,1151,1152,33],{},"If ",[47,1150,919],{}," is new to you, read ",[24,1153,1155,1156,1158],{"href":1154},"\u002Flearn\u002Fthe-__init__-method-in-python-explained","the ",[47,1157,919],{}," method in Python explained",[35,1160,1162,1163],{"id":1161},"simple-example-with-__init__","Simple example with ",[47,1164,919],{},[14,1166,1167],{},"A common pattern is:",[1169,1170,1171,1174,1180],"ol",{},[203,1172,1173],{},"The parent class sets shared attributes",[203,1175,1176,1177],{},"The child class calls ",[47,1178,1179],{},"super().__init__()",[203,1181,1182],{},"The child class adds its own attributes",[40,1184,1186],{"className":42,"code":1185,"language":44,"meta":45,"style":45},"class Vehicle:\n    def __init__(self, brand):\n        self.brand = brand\n\n    def show_brand(self):\n        return f\"Brand: {self.brand}\"\n\nclass Car(Vehicle):\n    def __init__(self, brand, doors):\n        super().__init__(brand)\n        self.doors = doors\n\n    def show_doors(self):\n        return f\"Doors: {self.doors}\"\n\ncar = Car(\"Toyota\", 4)\n\nprint(car.show_brand())\nprint(car.show_doors())\n",[47,1187,1188,1197,1214,1228,1232,1245,1270,1274,1288,1309,1323,1337,1341,1354,1376,1381,1407,1412,1429],{"__ignoreMap":45},[50,1189,1190,1192,1195],{"class":52,"line":53},[50,1191,57],{"class":56},[50,1193,1194],{"class":60}," Vehicle",[50,1196,65],{"class":64},[50,1198,1199,1201,1203,1205,1207,1209,1212],{"class":52,"line":68},[50,1200,71],{"class":56},[50,1202,940],{"class":159},[50,1204,78],{"class":64},[50,1206,82],{"class":81},[50,1208,947],{"class":64},[50,1210,1211],{"class":950}," brand",[50,1213,85],{"class":64},[50,1215,1216,1218,1220,1223,1225],{"class":52,"line":88},[50,1217,959],{"class":958},[50,1219,33],{"class":64},[50,1221,1222],{"class":964},"brand",[50,1224,968],{"class":146},[50,1226,1227],{"class":142}," brand\n",[50,1229,1230],{"class":52,"line":106},[50,1231,110],{"emptyLinePlaceholder":109},[50,1233,1234,1236,1239,1241,1243],{"class":52,"line":113},[50,1235,71],{"class":56},[50,1237,1238],{"class":74}," show_brand",[50,1240,78],{"class":64},[50,1242,82],{"class":81},[50,1244,85],{"class":64},[50,1246,1247,1249,1252,1255,1259,1261,1263,1265,1268],{"class":52,"line":128},[50,1248,92],{"class":91},[50,1250,1251],{"class":56}," f",[50,1253,1254],{"class":99},"\"Brand: ",[50,1256,1258],{"class":1257},"srdBf","{",[50,1260,82],{"class":958},[50,1262,33],{"class":64},[50,1264,1222],{"class":964},[50,1266,1267],{"class":1257},"}",[50,1269,103],{"class":99},[50,1271,1272],{"class":52,"line":134},[50,1273,110],{"emptyLinePlaceholder":109},[50,1275,1276,1278,1281,1283,1286],{"class":52,"line":139},[50,1277,57],{"class":56},[50,1279,1280],{"class":60}," Car",[50,1282,78],{"class":64},[50,1284,1285],{"class":60},"Vehicle",[50,1287,85],{"class":64},[50,1289,1290,1292,1294,1296,1298,1300,1302,1304,1307],{"class":52,"line":156},[50,1291,71],{"class":56},[50,1293,940],{"class":159},[50,1295,78],{"class":64},[50,1297,82],{"class":81},[50,1299,947],{"class":64},[50,1301,1211],{"class":950},[50,1303,947],{"class":64},[50,1305,1306],{"class":950}," doors",[50,1308,85],{"class":64},[50,1310,1311,1313,1315,1317,1319,1321],{"class":52,"line":630},[50,1312,1014],{"class":1013},[50,1314,1017],{"class":64},[50,1316,919],{"class":159},[50,1318,78],{"class":64},[50,1320,1222],{"class":150},[50,1322,1026],{"class":64},[50,1324,1325,1327,1329,1332,1334],{"class":52,"line":635},[50,1326,959],{"class":958},[50,1328,33],{"class":64},[50,1330,1331],{"class":964},"doors",[50,1333,968],{"class":146},[50,1335,1336],{"class":142}," doors\n",[50,1338,1339],{"class":52,"line":650},[50,1340,110],{"emptyLinePlaceholder":109},[50,1342,1343,1345,1348,1350,1352],{"class":52,"line":857},[50,1344,71],{"class":56},[50,1346,1347],{"class":74}," show_doors",[50,1349,78],{"class":64},[50,1351,82],{"class":81},[50,1353,85],{"class":64},[50,1355,1357,1359,1361,1364,1366,1368,1370,1372,1374],{"class":52,"line":1356},14,[50,1358,92],{"class":91},[50,1360,1251],{"class":56},[50,1362,1363],{"class":99},"\"Doors: ",[50,1365,1258],{"class":1257},[50,1367,82],{"class":958},[50,1369,33],{"class":64},[50,1371,1331],{"class":964},[50,1373,1267],{"class":1257},[50,1375,103],{"class":99},[50,1377,1379],{"class":52,"line":1378},15,[50,1380,110],{"emptyLinePlaceholder":109},[50,1382,1384,1387,1389,1391,1393,1395,1398,1400,1402,1405],{"class":52,"line":1383},16,[50,1385,1386],{"class":142},"car ",[50,1388,147],{"class":146},[50,1390,1280],{"class":150},[50,1392,78],{"class":64},[50,1394,1057],{"class":95},[50,1396,1397],{"class":99},"Toyota",[50,1399,1057],{"class":95},[50,1401,947],{"class":64},[50,1403,1404],{"class":1257}," 4",[50,1406,1026],{"class":64},[50,1408,1410],{"class":52,"line":1409},17,[50,1411,110],{"emptyLinePlaceholder":109},[50,1413,1415,1417,1419,1422,1424,1427],{"class":52,"line":1414},18,[50,1416,160],{"class":159},[50,1418,78],{"class":64},[50,1420,1421],{"class":150},"car",[50,1423,33],{"class":64},[50,1425,1426],{"class":150},"show_brand",[50,1428,173],{"class":64},[50,1430,1432,1434,1436,1438,1440,1443],{"class":52,"line":1431},19,[50,1433,160],{"class":159},[50,1435,78],{"class":64},[50,1437,1421],{"class":150},[50,1439,33],{"class":64},[50,1441,1442],{"class":150},"show_doors",[50,1444,173],{"class":64},[14,1446,1447],{},[177,1448,179],{},[40,1450,1452],{"className":42,"code":1451,"language":44,"meta":45,"style":45},"Brand: Toyota\nDoors: 4\n",[47,1453,1454,1465],{"__ignoreMap":45},[50,1455,1456,1459,1462],{"class":52,"line":53},[50,1457,1458],{"class":142},"Brand",[50,1460,1461],{"class":64},":",[50,1463,1464],{"class":142}," Toyota\n",[50,1466,1467,1470,1472],{"class":52,"line":68},[50,1468,1469],{"class":142},"Doors",[50,1471,1461],{"class":64},[50,1473,1474],{"class":1257}," 4\n",[14,1476,1477],{},"This works because:",[200,1479,1480,1487,1495],{},[203,1481,1482,335,1485],{},[47,1483,1484],{},"Car",[47,1486,1285],{},[203,1488,1489,1491,1492,1494],{},[47,1490,1285],{}," handles the shared ",[47,1493,1222],{}," attribute",[203,1496,1497,1499,1500,1494],{},[47,1498,1484],{}," adds the ",[47,1501,1331],{},[35,1503,1505],{"id":1504},"when-inheritance-is-useful","When inheritance is useful",[14,1507,1508],{},"Inheritance is useful when:",[200,1510,1511,1514,1517],{},[203,1512,1513],{},"Several classes share the same data or methods",[203,1515,1516],{},"You want to avoid copying the same code into many classes",[203,1518,1519],{},"You want related classes with small differences",[14,1521,1522],{},"Common examples:",[200,1524,1525,1531,1537],{},[203,1526,1527,28,1529],{},[47,1528,123],{},[47,1530,334],{},[203,1532,1533,28,1535],{},[47,1534,1285],{},[47,1536,1484],{},[203,1538,1539,28,1542],{},[47,1540,1541],{},"User",[47,1543,1544],{},"AdminUser",[14,1546,1547],{},"Inheritance is usually a good choice when the child class is a more specific version of the parent class.",[35,1549,1551],{"id":1550},"common-beginner-mistakes","Common beginner mistakes",[14,1553,1554],{},"Here are some common problems beginners run into.",[1556,1557,1559],"h3",{"id":1558},"forgetting-the-parent-class-in-parentheses","Forgetting the parent class in parentheses",[14,1561,1562,1563,1566],{},"This does ",[177,1564,1565],{},"not"," create inheritance:",[40,1568,1570],{"className":42,"code":1569,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog:\n    pass\n",[47,1571,1572,1580,1592,1602,1606,1614],{"__ignoreMap":45},[50,1573,1574,1576,1578],{"class":52,"line":53},[50,1575,57],{"class":56},[50,1577,61],{"class":60},[50,1579,65],{"class":64},[50,1581,1582,1584,1586,1588,1590],{"class":52,"line":68},[50,1583,71],{"class":56},[50,1585,75],{"class":74},[50,1587,78],{"class":64},[50,1589,82],{"class":81},[50,1591,85],{"class":64},[50,1593,1594,1596,1598,1600],{"class":52,"line":88},[50,1595,92],{"class":91},[50,1597,96],{"class":95},[50,1599,100],{"class":99},[50,1601,103],{"class":95},[50,1603,1604],{"class":52,"line":106},[50,1605,110],{"emptyLinePlaceholder":109},[50,1607,1608,1610,1612],{"class":52,"line":113},[50,1609,57],{"class":56},[50,1611,118],{"class":60},[50,1613,65],{"class":64},[50,1615,1616],{"class":52,"line":128},[50,1617,131],{"class":91},[14,1619,1620,1622,1623,1625,1626,33],{},[47,1621,334],{}," will not get the ",[47,1624,348],{}," method because it does not inherit from ",[47,1627,123],{},[14,1629,1630],{},"Correct version:",[40,1632,1634],{"className":42,"code":1633,"language":44,"meta":45,"style":45},"class Dog(Animal):\n    pass\n",[47,1635,1636,1648],{"__ignoreMap":45},[50,1637,1638,1640,1642,1644,1646],{"class":52,"line":53},[50,1639,57],{"class":56},[50,1641,118],{"class":60},[50,1643,78],{"class":64},[50,1645,123],{"class":60},[50,1647,85],{"class":64},[50,1649,1650],{"class":52,"line":68},[50,1651,131],{"class":91},[1556,1653,1655,1656,1658,1659],{"id":1654},"overriding-__init__-but-not-calling-super__init__","Overriding ",[47,1657,919],{}," but not calling ",[47,1660,1179],{},[14,1662,1663],{},"If the parent class sets important attributes, the child class may break if it skips the parent setup.",[40,1665,1667],{"className":42,"code":1666,"language":44,"meta":45,"style":45},"class Animal:\n    def __init__(self, name):\n        self.name = name\n\nclass Dog(Animal):\n    def __init__(self, breed):\n        self.breed = breed\n\ndog = Dog(\"Labrador\")\nprint(dog.name)\n",[47,1668,1669,1677,1693,1705,1709,1721,1737,1749,1753,1771],{"__ignoreMap":45},[50,1670,1671,1673,1675],{"class":52,"line":53},[50,1672,57],{"class":56},[50,1674,61],{"class":60},[50,1676,65],{"class":64},[50,1678,1679,1681,1683,1685,1687,1689,1691],{"class":52,"line":68},[50,1680,71],{"class":56},[50,1682,940],{"class":159},[50,1684,78],{"class":64},[50,1686,82],{"class":81},[50,1688,947],{"class":64},[50,1690,951],{"class":950},[50,1692,85],{"class":64},[50,1694,1695,1697,1699,1701,1703],{"class":52,"line":88},[50,1696,959],{"class":958},[50,1698,33],{"class":64},[50,1700,965],{"class":964},[50,1702,968],{"class":146},[50,1704,971],{"class":142},[50,1706,1707],{"class":52,"line":106},[50,1708,110],{"emptyLinePlaceholder":109},[50,1710,1711,1713,1715,1717,1719],{"class":52,"line":113},[50,1712,57],{"class":56},[50,1714,118],{"class":60},[50,1716,78],{"class":64},[50,1718,123],{"class":60},[50,1720,85],{"class":64},[50,1722,1723,1725,1727,1729,1731,1733,1735],{"class":52,"line":128},[50,1724,71],{"class":56},[50,1726,940],{"class":159},[50,1728,78],{"class":64},[50,1730,82],{"class":81},[50,1732,947],{"class":64},[50,1734,1006],{"class":950},[50,1736,85],{"class":64},[50,1738,1739,1741,1743,1745,1747],{"class":52,"line":134},[50,1740,959],{"class":958},[50,1742,33],{"class":64},[50,1744,1035],{"class":964},[50,1746,968],{"class":146},[50,1748,1040],{"class":142},[50,1750,1751],{"class":52,"line":139},[50,1752,110],{"emptyLinePlaceholder":109},[50,1754,1755,1757,1759,1761,1763,1765,1767,1769],{"class":52,"line":156},[50,1756,308],{"class":142},[50,1758,147],{"class":146},[50,1760,118],{"class":150},[50,1762,78],{"class":64},[50,1764,1057],{"class":95},[50,1766,1069],{"class":99},[50,1768,1057],{"class":95},[50,1770,1026],{"class":64},[50,1772,1773,1775,1777,1779,1781,1783],{"class":52,"line":630},[50,1774,160],{"class":159},[50,1776,78],{"class":64},[50,1778,323],{"class":150},[50,1780,33],{"class":64},[50,1782,965],{"class":964},[50,1784,1026],{"class":64},[14,1786,1787,1788,1790],{},"This causes an error because ",[47,1789,965],{}," was never created.",[14,1792,1793],{},"A better version is:",[40,1795,1797],{"className":42,"code":1796,"language":44,"meta":45,"style":45},"class Animal:\n    def __init__(self, name):\n        self.name = name\n\nclass Dog(Animal):\n    def __init__(self, name, breed):\n        super().__init__(name)\n        self.breed = breed\n\ndog = Dog(\"Buddy\", \"Labrador\")\nprint(dog.name)\nprint(dog.breed)\n",[47,1798,1799,1807,1823,1835,1839,1851,1871,1885,1897,1901,1927,1941],{"__ignoreMap":45},[50,1800,1801,1803,1805],{"class":52,"line":53},[50,1802,57],{"class":56},[50,1804,61],{"class":60},[50,1806,65],{"class":64},[50,1808,1809,1811,1813,1815,1817,1819,1821],{"class":52,"line":68},[50,1810,71],{"class":56},[50,1812,940],{"class":159},[50,1814,78],{"class":64},[50,1816,82],{"class":81},[50,1818,947],{"class":64},[50,1820,951],{"class":950},[50,1822,85],{"class":64},[50,1824,1825,1827,1829,1831,1833],{"class":52,"line":88},[50,1826,959],{"class":958},[50,1828,33],{"class":64},[50,1830,965],{"class":964},[50,1832,968],{"class":146},[50,1834,971],{"class":142},[50,1836,1837],{"class":52,"line":106},[50,1838,110],{"emptyLinePlaceholder":109},[50,1840,1841,1843,1845,1847,1849],{"class":52,"line":113},[50,1842,57],{"class":56},[50,1844,118],{"class":60},[50,1846,78],{"class":64},[50,1848,123],{"class":60},[50,1850,85],{"class":64},[50,1852,1853,1855,1857,1859,1861,1863,1865,1867,1869],{"class":52,"line":128},[50,1854,71],{"class":56},[50,1856,940],{"class":159},[50,1858,78],{"class":64},[50,1860,82],{"class":81},[50,1862,947],{"class":64},[50,1864,951],{"class":950},[50,1866,947],{"class":64},[50,1868,1006],{"class":950},[50,1870,85],{"class":64},[50,1872,1873,1875,1877,1879,1881,1883],{"class":52,"line":134},[50,1874,1014],{"class":1013},[50,1876,1017],{"class":64},[50,1878,919],{"class":159},[50,1880,78],{"class":64},[50,1882,965],{"class":150},[50,1884,1026],{"class":64},[50,1886,1887,1889,1891,1893,1895],{"class":52,"line":139},[50,1888,959],{"class":958},[50,1890,33],{"class":64},[50,1892,1035],{"class":964},[50,1894,968],{"class":146},[50,1896,1040],{"class":142},[50,1898,1899],{"class":52,"line":156},[50,1900,110],{"emptyLinePlaceholder":109},[50,1902,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925],{"class":52,"line":630},[50,1904,308],{"class":142},[50,1906,147],{"class":146},[50,1908,118],{"class":150},[50,1910,78],{"class":64},[50,1912,1057],{"class":95},[50,1914,1060],{"class":99},[50,1916,1057],{"class":95},[50,1918,947],{"class":64},[50,1920,96],{"class":95},[50,1922,1069],{"class":99},[50,1924,1057],{"class":95},[50,1926,1026],{"class":64},[50,1928,1929,1931,1933,1935,1937,1939],{"class":52,"line":635},[50,1930,160],{"class":159},[50,1932,78],{"class":64},[50,1934,323],{"class":150},[50,1936,33],{"class":64},[50,1938,965],{"class":964},[50,1940,1026],{"class":64},[50,1942,1943,1945,1947,1949,1951,1953],{"class":52,"line":650},[50,1944,160],{"class":159},[50,1946,78],{"class":64},[50,1948,323],{"class":150},[50,1950,33],{"class":64},[50,1952,1035],{"class":964},[50,1954,1026],{"class":64},[1556,1956,1958],{"id":1957},"misspelling-a-method-name","Misspelling a method name",[14,1960,1961],{},"If you want to override a method, the name must match exactly.",[40,1963,1965],{"className":42,"code":1964,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    def speek(self):\n        return \"Woof\"\n",[47,1966,1967,1975,1987,1997,2001,2013,2026],{"__ignoreMap":45},[50,1968,1969,1971,1973],{"class":52,"line":53},[50,1970,57],{"class":56},[50,1972,61],{"class":60},[50,1974,65],{"class":64},[50,1976,1977,1979,1981,1983,1985],{"class":52,"line":68},[50,1978,71],{"class":56},[50,1980,75],{"class":74},[50,1982,78],{"class":64},[50,1984,82],{"class":81},[50,1986,85],{"class":64},[50,1988,1989,1991,1993,1995],{"class":52,"line":88},[50,1990,92],{"class":91},[50,1992,96],{"class":95},[50,1994,100],{"class":99},[50,1996,103],{"class":95},[50,1998,1999],{"class":52,"line":106},[50,2000,110],{"emptyLinePlaceholder":109},[50,2002,2003,2005,2007,2009,2011],{"class":52,"line":113},[50,2004,57],{"class":56},[50,2006,118],{"class":60},[50,2008,78],{"class":64},[50,2010,123],{"class":60},[50,2012,85],{"class":64},[50,2014,2015,2017,2020,2022,2024],{"class":52,"line":128},[50,2016,71],{"class":56},[50,2018,2019],{"class":74}," speek",[50,2021,78],{"class":64},[50,2023,82],{"class":81},[50,2025,85],{"class":64},[50,2027,2028,2030,2032,2034],{"class":52,"line":134},[50,2029,92],{"class":91},[50,2031,96],{"class":95},[50,2033,808],{"class":99},[50,2035,103],{"class":95},[14,2037,2038,2039,2042,2043,33],{},"Here, ",[47,2040,2041],{},"speek()"," does not override ",[47,2044,348],{},[1556,2046,2048],{"id":2047},"expecting-the-parent-class-to-use-child-only-attributes-automatically","Expecting the parent class to use child-only attributes automatically",[14,2050,2051],{},"The parent class only knows about attributes that have been created.",[14,2053,2054,2055,2058,2059,2061],{},"If the parent method uses ",[47,2056,2057],{},"self.name",", then ",[47,2060,965],{}," must exist before that method is called.",[35,2063,2065],{"id":2064},"how-to-check-that-inheritance-is-working","How to check that inheritance is working",[14,2067,2068],{},"If you are not sure whether inheritance is working, try these checks.",[1556,2070,2072],{"id":2071},"_1-create-an-object-from-the-child-class","1. Create an object from the child class",[40,2074,2076],{"className":42,"code":2075,"language":44,"meta":45,"style":45},"class Animal:\n    def speak(self):\n        return \"Some sound\"\n\nclass Dog(Animal):\n    pass\n\npet = Dog()\nprint(type(pet))\n",[47,2077,2078,2086,2098,2108,2112,2124,2128,2132,2142],{"__ignoreMap":45},[50,2079,2080,2082,2084],{"class":52,"line":53},[50,2081,57],{"class":56},[50,2083,61],{"class":60},[50,2085,65],{"class":64},[50,2087,2088,2090,2092,2094,2096],{"class":52,"line":68},[50,2089,71],{"class":56},[50,2091,75],{"class":74},[50,2093,78],{"class":64},[50,2095,82],{"class":81},[50,2097,85],{"class":64},[50,2099,2100,2102,2104,2106],{"class":52,"line":88},[50,2101,92],{"class":91},[50,2103,96],{"class":95},[50,2105,100],{"class":99},[50,2107,103],{"class":95},[50,2109,2110],{"class":52,"line":106},[50,2111,110],{"emptyLinePlaceholder":109},[50,2113,2114,2116,2118,2120,2122],{"class":52,"line":113},[50,2115,57],{"class":56},[50,2117,118],{"class":60},[50,2119,78],{"class":64},[50,2121,123],{"class":60},[50,2123,85],{"class":64},[50,2125,2126],{"class":52,"line":128},[50,2127,131],{"class":91},[50,2129,2130],{"class":52,"line":134},[50,2131,110],{"emptyLinePlaceholder":109},[50,2133,2134,2136,2138,2140],{"class":52,"line":139},[50,2135,143],{"class":142},[50,2137,147],{"class":146},[50,2139,118],{"class":150},[50,2141,153],{"class":64},[50,2143,2144,2146,2148,2151,2153,2155],{"class":52,"line":156},[50,2145,160],{"class":159},[50,2147,78],{"class":64},[50,2149,2150],{"class":1013},"type",[50,2152,78],{"class":64},[50,2154,165],{"class":150},[50,2156,2157],{"class":64},"))\n",[1556,2159,2161],{"id":2160},"_2-call-a-method-defined-in-the-parent-class","2. Call a method defined in the parent class",[40,2163,2165],{"className":42,"code":2164,"language":44,"meta":45,"style":45},"print(pet.speak())\n",[47,2166,2167],{"__ignoreMap":45},[50,2168,2169,2171,2173,2175,2177,2179],{"class":52,"line":53},[50,2170,160],{"class":159},[50,2172,78],{"class":64},[50,2174,165],{"class":150},[50,2176,33],{"class":64},[50,2178,170],{"class":150},[50,2180,173],{"class":64},[14,2182,2183],{},"If this works, the child object is using the parent method.",[1556,2185,2187],{"id":2186},"_3-print-the-object-attributes","3. Print the object attributes",[40,2189,2191],{"className":42,"code":2190,"language":44,"meta":45,"style":45},"class Animal:\n    def __init__(self, name):\n        self.name = name\n\nclass Dog(Animal):\n    def __init__(self, name, breed):\n        super().__init__(name)\n        self.breed = breed\n\npet = Dog(\"Buddy\", \"Labrador\")\nprint(pet.__dict__)\n",[47,2192,2193,2201,2217,2229,2233,2245,2265,2279,2291,2295,2321],{"__ignoreMap":45},[50,2194,2195,2197,2199],{"class":52,"line":53},[50,2196,57],{"class":56},[50,2198,61],{"class":60},[50,2200,65],{"class":64},[50,2202,2203,2205,2207,2209,2211,2213,2215],{"class":52,"line":68},[50,2204,71],{"class":56},[50,2206,940],{"class":159},[50,2208,78],{"class":64},[50,2210,82],{"class":81},[50,2212,947],{"class":64},[50,2214,951],{"class":950},[50,2216,85],{"class":64},[50,2218,2219,2221,2223,2225,2227],{"class":52,"line":88},[50,2220,959],{"class":958},[50,2222,33],{"class":64},[50,2224,965],{"class":964},[50,2226,968],{"class":146},[50,2228,971],{"class":142},[50,2230,2231],{"class":52,"line":106},[50,2232,110],{"emptyLinePlaceholder":109},[50,2234,2235,2237,2239,2241,2243],{"class":52,"line":113},[50,2236,57],{"class":56},[50,2238,118],{"class":60},[50,2240,78],{"class":64},[50,2242,123],{"class":60},[50,2244,85],{"class":64},[50,2246,2247,2249,2251,2253,2255,2257,2259,2261,2263],{"class":52,"line":128},[50,2248,71],{"class":56},[50,2250,940],{"class":159},[50,2252,78],{"class":64},[50,2254,82],{"class":81},[50,2256,947],{"class":64},[50,2258,951],{"class":950},[50,2260,947],{"class":64},[50,2262,1006],{"class":950},[50,2264,85],{"class":64},[50,2266,2267,2269,2271,2273,2275,2277],{"class":52,"line":134},[50,2268,1014],{"class":1013},[50,2270,1017],{"class":64},[50,2272,919],{"class":159},[50,2274,78],{"class":64},[50,2276,965],{"class":150},[50,2278,1026],{"class":64},[50,2280,2281,2283,2285,2287,2289],{"class":52,"line":139},[50,2282,959],{"class":958},[50,2284,33],{"class":64},[50,2286,1035],{"class":964},[50,2288,968],{"class":146},[50,2290,1040],{"class":142},[50,2292,2293],{"class":52,"line":156},[50,2294,110],{"emptyLinePlaceholder":109},[50,2296,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319],{"class":52,"line":630},[50,2298,143],{"class":142},[50,2300,147],{"class":146},[50,2302,118],{"class":150},[50,2304,78],{"class":64},[50,2306,1057],{"class":95},[50,2308,1060],{"class":99},[50,2310,1057],{"class":95},[50,2312,947],{"class":64},[50,2314,96],{"class":95},[50,2316,1069],{"class":99},[50,2318,1057],{"class":95},[50,2320,1026],{"class":64},[50,2322,2323,2325,2327,2329,2331,2334],{"class":52,"line":635},[50,2324,160],{"class":159},[50,2326,78],{"class":64},[50,2328,165],{"class":150},[50,2330,33],{"class":64},[50,2332,2333],{"class":958},"__dict__",[50,2335,1026],{"class":64},[14,2337,2338],{},"Example output:",[40,2340,2342],{"className":42,"code":2341,"language":44,"meta":45,"style":45},"{'name': 'Buddy', 'breed': 'Labrador'}\n",[47,2343,2344],{"__ignoreMap":45},[50,2345,2346,2348,2351,2353,2355,2357,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380],{"class":52,"line":53},[50,2347,1258],{"class":64},[50,2349,2350],{"class":95},"'",[50,2352,965],{"class":99},[50,2354,2350],{"class":95},[50,2356,1461],{"class":64},[50,2358,2359],{"class":95}," '",[50,2361,1060],{"class":99},[50,2363,2350],{"class":95},[50,2365,947],{"class":64},[50,2367,2359],{"class":95},[50,2369,1035],{"class":99},[50,2371,2350],{"class":95},[50,2373,1461],{"class":64},[50,2375,2359],{"class":95},[50,2377,1069],{"class":99},[50,2379,2350],{"class":95},[50,2381,2382],{"class":64},"}\n",[1556,2384,2386,2387],{"id":2385},"_4-use-isinstance","4. Use ",[47,2388,2389],{},"isinstance()",[40,2391,2393],{"className":42,"code":2392,"language":44,"meta":45,"style":45},"print(isinstance(pet, Dog))\nprint(isinstance(pet, Animal))\n",[47,2394,2395,2414],{"__ignoreMap":45},[50,2396,2397,2399,2401,2404,2406,2408,2410,2412],{"class":52,"line":53},[50,2398,160],{"class":159},[50,2400,78],{"class":64},[50,2402,2403],{"class":159},"isinstance",[50,2405,78],{"class":64},[50,2407,165],{"class":150},[50,2409,947],{"class":64},[50,2411,118],{"class":150},[50,2413,2157],{"class":64},[50,2415,2416,2418,2420,2422,2424,2426,2428,2430],{"class":52,"line":68},[50,2417,160],{"class":159},[50,2419,78],{"class":64},[50,2421,2403],{"class":159},[50,2423,78],{"class":64},[50,2425,165],{"class":150},[50,2427,947],{"class":64},[50,2429,61],{"class":150},[50,2431,2157],{"class":64},[14,2433,2434,2435,2438,2439,2441,2442,33],{},"Both can be ",[47,2436,2437],{},"True"," because a ",[47,2440,334],{}," object is also an ",[47,2443,123],{},[1556,2445,2447],{"id":2446},"_5-useful-debugging-commands","5. Useful debugging commands",[14,2449,2450],{},"These can help when something is not working as expected:",[40,2452,2454],{"className":42,"code":2453,"language":44,"meta":45,"style":45},"print(type(obj))\nprint(isinstance(obj, ParentClass))\nprint(obj.__dict__)\nprint(dir(obj))\nhelp(ChildClass)\n",[47,2455,2456,2470,2489,2503,2518],{"__ignoreMap":45},[50,2457,2458,2460,2462,2464,2466,2468],{"class":52,"line":53},[50,2459,160],{"class":159},[50,2461,78],{"class":64},[50,2463,2150],{"class":1013},[50,2465,78],{"class":64},[50,2467,465],{"class":150},[50,2469,2157],{"class":64},[50,2471,2472,2474,2476,2478,2480,2482,2484,2487],{"class":52,"line":68},[50,2473,160],{"class":159},[50,2475,78],{"class":64},[50,2477,2403],{"class":159},[50,2479,78],{"class":64},[50,2481,465],{"class":150},[50,2483,947],{"class":64},[50,2485,2486],{"class":150}," ParentClass",[50,2488,2157],{"class":64},[50,2490,2491,2493,2495,2497,2499,2501],{"class":52,"line":88},[50,2492,160],{"class":159},[50,2494,78],{"class":64},[50,2496,465],{"class":150},[50,2498,33],{"class":64},[50,2500,2333],{"class":958},[50,2502,1026],{"class":64},[50,2504,2505,2507,2509,2512,2514,2516],{"class":52,"line":106},[50,2506,160],{"class":159},[50,2508,78],{"class":64},[50,2510,2511],{"class":159},"dir",[50,2513,78],{"class":64},[50,2515,465],{"class":150},[50,2517,2157],{"class":64},[50,2519,2520,2523,2525,2528],{"class":52,"line":113},[50,2521,2522],{"class":159},"help",[50,2524,78],{"class":64},[50,2526,2527],{"class":150},"ChildClass",[50,2529,1026],{"class":64},[14,2531,2532],{},"They are useful for checking:",[200,2534,2535,2538,2541,2544],{},[203,2536,2537],{},"What type the object is",[203,2539,2540],{},"Whether Python sees it as an instance of the parent class",[203,2542,2543],{},"Which attributes exist",[203,2545,2546],{},"Which methods are available",[35,2548,2550],{"id":2549},"faq","FAQ",[1556,2552,2554],{"id":2553},"what-is-the-difference-between-a-parent-class-and-a-child-class","What is the difference between a parent class and a child class?",[14,2556,2557],{},"A parent class contains shared code. A child class inherits that code and can also add or change behavior.",[1556,2559,2561,2562,2564],{"id":2560},"do-i-always-need-super-when-using-inheritance","Do I always need ",[47,2563,907],{}," when using inheritance?",[14,2566,2567,2568,2570],{},"No. It is most useful when the parent class has an ",[47,2569,919],{}," method or another method you still want to use.",[1556,2572,2574],{"id":2573},"can-a-child-class-use-parent-methods-without-rewriting-them","Can a child class use parent methods without rewriting them?",[14,2576,2577],{},"Yes. That is one of the main reasons to use inheritance.",[1556,2579,2581],{"id":2580},"what-happens-if-the-child-class-has-a-method-with-the-same-name-as-the-parent","What happens if the child class has a method with the same name as the parent?",[14,2583,2584],{},"The child version is used. This is called overriding.",[1556,2586,2588],{"id":2587},"is-inheritance-the-same-as-creating-an-object-from-a-class","Is inheritance the same as creating an object from a class?",[14,2590,2591],{},"No. Inheritance creates a new class from another class. Creating an object makes an instance of a class.",[35,2593,2595],{"id":2594},"see-also","See also",[200,2597,2598,2602,2607,2612,2619,2624],{},[203,2599,2600],{},[24,2601,32],{"href":31},[203,2603,2604],{},[24,2605,2606],{"href":26},"How to create a class in Python",[203,2608,2609],{},[24,2610,2611],{"href":527},"How to create an object in Python",[203,2613,2614],{},[24,2615,2616,2617,1158],{"href":1154},"The ",[47,2618,919],{},[203,2620,2621],{},[24,2622,2623],{"href":722},"How to add methods to a class in Python",[203,2625,2626],{},[24,2627,2628],{"href":355},"What inheritance means in Python",[2630,2631,2632],"style",{},"html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .smCYv, html code.shiki .smCYv{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sFwrP, html code.shiki .sFwrP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":45,"searchDepth":68,"depth":68,"links":2634},[2635,2636,2637,2638,2639,2640,2641,2643,2645,2646,2653,2661,2669],{"id":37,"depth":68,"text":38},{"id":194,"depth":68,"text":195},{"id":217,"depth":68,"text":218},{"id":359,"depth":68,"text":360},{"id":531,"depth":68,"text":532},{"id":726,"depth":68,"text":727},{"id":904,"depth":68,"text":2642},"Use super() to call the parent version",{"id":1161,"depth":68,"text":2644},"Simple example with __init__",{"id":1504,"depth":68,"text":1505},{"id":1550,"depth":68,"text":1551,"children":2647},[2648,2649,2651,2652],{"id":1558,"depth":88,"text":1559},{"id":1654,"depth":88,"text":2650},"Overriding __init__ but not calling super().__init__()",{"id":1957,"depth":88,"text":1958},{"id":2047,"depth":88,"text":2048},{"id":2064,"depth":68,"text":2065,"children":2654},[2655,2656,2657,2658,2660],{"id":2071,"depth":88,"text":2072},{"id":2160,"depth":88,"text":2161},{"id":2186,"depth":88,"text":2187},{"id":2385,"depth":88,"text":2659},"4. Use isinstance()",{"id":2446,"depth":88,"text":2447},{"id":2549,"depth":68,"text":2550,"children":2662},[2663,2664,2666,2667,2668],{"id":2553,"depth":88,"text":2554},{"id":2560,"depth":88,"text":2665},"Do I always need super() when using inheritance?",{"id":2573,"depth":88,"text":2574},{"id":2580,"depth":88,"text":2581},{"id":2587,"depth":88,"text":2588},{"id":2594,"depth":68,"text":2595},"Master how to inherit from a class in python in our comprehensive Python beginner guide.","md",{},"\u002Fhow-to\u002Fhow-to-inherit-from-a-class-in-python",{"title":5,"description":2670},"how-to\u002Fhow-to-inherit-from-a-class-in-python","RP2YXehgO3pMGkseYC2Ts918T5ehyvfdk1OOZtR1spA",1777585504046]