Hy vọng điều này là rõ ràng đủ:Python: Bắt giá trị baseclass từ lớp có nguồn gốc
class myParent():
def __init__(self):
self.parentNumber = 5
class Child(myParent):
def __init__(self):
self.childNumber = 4
def multiplyNumbers(self):
print myParent.parentNumber * self.childNumber
p = Child()
p.multiplyNumbers()
tôi muốn thiết lập các parentNumber cá nhân, và sau đó đạt được con số thông qua các lớp con, và trong trường hợp này sử dụng nó cho một số phép nhân.
Tôi mới tham gia khu vực OOP nên mọi gợi ý chung về thừa kế cũng được hoan nghênh!
Thông tin thêm: Tôi đang thiết kế giải pháp quản lý dự án cho các dự án dựa trên vfx và đang chơi với các lớp học và kế thừa để xem cách chúng có thể giúp tôi nhiều nhất.
Ngay bây giờ, tôi đã có lớp học hàng đầu, Dự án và lớp học có nguồn gốc, Shot. Shot có biến self.length với độ dài của ảnh cụ thể. Nó cũng có phương thức getLengthInSeconds() sử dụng self.length cùng với Project.fps để xác định độ dài tính bằng giây. Project có một phương thức setFps() trong đó fps được thiết lập sau khi một cá thể của lớp được tạo ra.
Tôi đã quen với các biến được bắt đầu bằng tự. và đã không thử nghiệm nhiều với các lớp bằng cách sử dụng các biến "toàn cục" hơn mà không có bản thân. . Nếu tôi làm mọi thứ trên toàn cầu, không có bản thân. Tôi có thể sử dụng Project.fps mà không gặp rắc rối, nhưng tôi nhận được một cảnh báo "thực hành lập trình xấu" trong cổ của tôi. Có lẽ có một cách tốt hơn, gọn gàng hơn?
Edit:
Sau khi một số đọc sách, siêu() có vẻ kinda nguy hiểm, và hơn một chút hơn là tôi cần tôi nghĩ. Tôi chủ yếu có các lớp thừa kế đơn và thậm chí không chắc chắn làm thế nào để sử dụng phân cấp kim cương .. Có cách nào an toàn hơn để truy cập các biến siêu lớp và các phương thức không bao gồm siêu()?
Edit:
Allright, xem nếu điều này có ý nghĩa hoặc nếu tôi đang suy nghĩ về nó hoàn toàn sai.
Tôi đang xem các lớp và kế thừa là nhóm và trẻ em. Một đứa trẻ biết đó là cha mẹ và tất cả các giá trị của nó. Một đứa trẻ cho cha mẹ khác biết rằng giá trị của cha mẹ. Những gì tôi đang cố gắng để đạt được là có tất cả các bức ảnh được tạo ra là một phần của một dự án. Và ngay bây giờ, tôi đang tạo ra các cá thể Shot() từ bên trong lớp Project(), thêm các cá thể vào một danh sách các ảnh mà sau đó được duy trì trong cá thể Project().
tức
class myParent(object):
def __init__(self):
self.parent_id = ''
self.children = []
def createChild(self, name):
self.children.append(myChild(name))
def getChildren(self):
return self.children
def setParentId(self, id):
self.parentId = id
class myChild(myParent):
def __init__(self, id):
super(myChild, self).__init__()
self.id = id
def getParentId(self):
return self.parent_id
p = myParent()
p.setParentId('parent01')
p.createChild('child01')
print p.getChildren()[0].getParentId()
tôi có thể loại thấy mis-bước trong logic ở đây, nhưng không có cách nào thực xung quanh nó .. Có vẻ như mọi trẻ em được nhận một trường hợp mới của cha mẹ theo cách này, nơi parent_id luôn là một chuỗi rỗng.
Bạn cần phải gọi constructor lớp cha. –